লিনাক্স + এসএসডি-তে অদলবদলগুলি পটভূমি বাতিল করা হয়


11

সমস্যা

আমি লিনাক্সের এসএসডি ডিস্কের মধ্যে স্যুপ পার্টিশনে ব্যাকগ্রাউন্ড ট্রিম অপারেশন সক্ষম করতে চাই । বিভিন্ন নিবন্ধ, যেমন মতে এই এক , কার্নেল এই কনফিগারেশন সনাক্ত করে এবং স্বয়ংক্রিয়ভাবে বাতিল অপারেশন সঞ্চালিত, কিন্তু আমার পরীক্ষা এটি কাজ করছে না যদিও "বাতিল" মাউন্ট বিকল্প এই আচরণ বাধ্য করতে ব্যবহৃত হয় বলে মনে হয়।

দৃশ্যপট

  • ডিবিয়ান হুইজি চলমান লিনাক্স ৩.২.০
  • এসএসডি ডিস্ক: 1 এক্স 120 জিবি ওসিজেড ভার্টেক্স 3 এমআই
  • 2 জিবি অদলবদল "প্লেইন" পার্টিশন, ডাব্লু / ও অন্যান্য স্তর (এলভিএম, রেড, ইত্যাদি)

পটভূমি

ব্যাকগ্রাউন্ড টিআরআইএম অদলবদল বিভাজনে কাজ করছে কিনা তা যাচাই করতে আমি এই পদক্ষেপগুলি অনুসরণ করি:

  1. ট্রিম সমর্থন : এসএসডি ডিস্ক টিআরআইএম কমান্ড সমর্থন করে কিনা তা পরীক্ষা করে এবং কার্নেলটি ডিভাইসটিকে আবর্তনহীন হিসাবে পতাকাঙ্কিত করে:

    # hdparm -I /dev/sda | grep TRIM
     * Data Set Management TRIM supported (limit 1 block)
     * Deterministic read data after TRIM
    
    # cat /sys/block/sda/queue/rotational
    0
    
  2. অদলবদল ভরাট আপ : পার্টিশনটি মাউন্ট করুন, সমস্ত ভিএম ক্যাশে পরিষ্কার করুন এবং লিনাক্সকে আক্রমণাত্মকভাবে vm.swappiness সেট করে 100 এ পরিবর্তন করতে কনফিগার করুন। তারপরে, একটি স্ক্রিপ্ট চালান যা সমস্ত উপলব্ধ মেমরির বরাদ্দ করে এবং কার্নেলটিকে অদলবদল করতে বাধ্য করে:

    # swapon [--discard] /dev/sda2
    # echo 3 > /proc/sys/vm/drop_caches
    # echo 100 > /proc/sys/vm/swappiness
    # ./fill-up-memory.up
    

    স্ক্রিপ্টটি 32 গিগাবাইট শারীরিক মেমরি + 2 গিগাবাইট অদলবদল সহ সার্ভারে চালিত হয় এবং মেমরিতে একটি .8 33.8 গিগাবাইট অবজেক্ট তৈরি করে, যা সমস্ত স্মৃতি পূরণ করে এবং অদলবদল শুরু করতে যথেষ্ট। এটি এমন স্ক্রিপ্টের একটি উদাহরণ যা এই আচরণটি অর্জন করে:

    #!/usr/bin/python
    
    mem = 33.8
    testing = 'A' * int(1024 * 1024 * 1024 * mem)
    raw_input()
    
  3. অদলবদলের সামগ্রী চেক করুন : "স্বপন-এস" দেখায় যে 100% অদলবদল মেমরি ব্যবহৃত হয়েছে। "এইচডিপিআরএম - রিড-সেক্টর" ব্যবহার করে আমি অদলবদল সেক্টরগুলির কাঁচা-সামগ্রী পরীক্ষা করি এবং সমস্ত বাইটগুলি "4141" তে সেট করা আছে, "এ" চরিত্রের জন্য সংশ্লিষ্ট হেক্সাডেসিমাল স্বরলিপি, সবকিছু প্রত্যাশার মতো কাজ করে। সেক্টর-বাই-সেক্টর অদলবদলের পার্টিশনের বিষয়বস্তু পড়ার জন্য এটি একটি উদাহরণ স্ক্রিপ্ট:

    #!/bin/bash
    
    for sector in `seq 194560 4100095` ; do
        hdparm --read-sector $sector /dev/sda
    done
    

দ্রষ্টব্য: আপনি বিভক্ত, সিএফডিস্ক ইত্যাদি ব্যবহার করে সোয়াপ পার্টিশনের শুরু / শেষের ক্ষেত্রটি পেতে পারেন

আমি যখন স্ক্রিপ্টটি বন্ধ করি তখন এটি অদলবদ বরাদ্দকরণ সহ সমস্ত মেমরি প্রকাশ করে, "স্বপন-এস" সিস্টেমে কোনও অদলবদ ব্যবহার করে না। এই মুহুর্তে, এটি প্রত্যাশা করা হয়েছে যে লিনাক্স অদলবদল করে অদলবদলের অংশটি ব্যাকগ্রাউন্ডে ফেলে দিতে শুরু করে, তবে এটি কার্যকর হয় না , সেক্টরের সামগ্রীগুলি এখনও "4141", এমনকি কয়েক ঘন্টা পরে।

আমি বেশ কয়েকটি পরীক্ষা করে দেখেছি এবং মনে হচ্ছে যে লিনাক্স কেবলমাত্র swapon()সিস্টেম কল ব্যবহার করে পার্টিশন সক্ষম করার সময় একটি সম্পূর্ণ বিসর্জন সঞ্চালন করে তবে পটভূমিতে কখনই না, যদিও "বাতিল" মাউন্ট অপশনগুলি / etc / fstab এ সক্ষম করা থাকে।

আরও গবেষণা: blkdev_issue_discard () হল অন্তর্নিহিত এসএসডি ডিভাইসে ট্রিম কমান্ড প্রেরণের দায়িত্বে থাকা কার্নেল ফাংশন, এই ফাংশনের দুটি অনন্য রেফারেন্স রয়েছে mm/swapfile.c:

  • discard_swap() এটিকে স্বপন () প্রক্রিয়া চলাকালীন বলা হয়, যদি "বাতিল করা" মাউন্ট অপশন সক্ষম করা থাকে তবে এটি সমস্ত বিষয়বস্তু বাদ দেয়, এটি প্রত্যাশার মতো কাজ করে।
  • discard_swap_cluster() এটি একটি ক্লাস্টার অদলবদলের বিষয়বস্তু ফেলে দেওয়া উচিত, তবে মনে হয় এটি কখনও ট্রিম কমান্ড সম্পাদন করে না।

প্রশ্ন: অদলবদল + এসএসডি ডিভাইসে লিনাক্সের প্রত্যাশিত আচরণটি কী? এটি সমস্ত ফ্রি সেক্টর / পৃষ্ঠাগুলি বাতিল করতে বা কেবলমাত্র বুট-আপ প্রক্রিয়া চলাকালীন পার্টিশন সক্ষম করার সময় একটি প্রাথমিক পূর্ণ বিসর্জন দেওয়া উচিত? ধন্যবাদ।


4
আলোচ্য বিষয়টি কি? র‍্যাম সস্তার, কারণ আপনি আপনার সার্ভারে 32 টি বেশি রেখে যথেষ্ট পরিমাণে প্রমাণ করছেন। অদলবদল বন্ধ করুন, দরকারী কিছু জন্য আপনার এসএসডি ব্যবহার করুন, এবং বিটফ্রিকিং বন্ধ করুন।
টম ও'কনোর

3
এই সার্ভারগুলিতে অদলবদল অক্ষম করা যায় না এবং এগুলির একটি অনন্য এসএসডি ডিস্ক রয়েছে, একটি .তিহ্যবাহী এইচডিডিতে অদলবদল বিভাজন হোস্ট করার কোনও বিকল্প নেই। আমি সচেতন যে একটি এসএসডি ডিস্কে অদলবদল করা সর্বোত্তম বিকল্প নয়, তবে আমি ভাবছিলাম যে ডিস্কের পারফরম্যান্সকে যতটা সম্ভব উন্নত করার জন্য আমি swap পার্টিশনগুলিতে একই "বাতিল" এক্সট 4 আচরণ অর্জন করতে পারি?
শান্তিসয়েজ

2
এই সত্যই অকাল অপটিমাইজেশনের ক্ষেত্রে বলে মনে হচ্ছে।
মাইকিবি

"মন্তব্যগুলি কেবল 5 মিনিটের জন্য সম্পাদনা করা যেতে পারে" - কর্মক্ষেত্রে এসএফ-তে থাকা আমাকে সঠিকভাবে সেবা দেয় .... যেমন আমি বলছিলাম; @ মাইকিবি আসলে, আমি এটি পড়ছি on উইকিপিডিয়া নিবন্ধে এমন কিছু উল্লেখ করা হয়েছিল যা সম্পর্কে আমি অবগত ছিলাম না। "ফ্ল্যাশ মেমরির ক্রিয়াকলাপের কারণে, হার্ডডিস্ক ড্রাইভে ডেটা সরাসরি ওভাররাইট করা যায় না।" সুতরাং এটি বোঝা যাবে যে অদলবদলে পূর্বে ব্যবহৃত ব্লকগুলি ফাঁকা থাকবে .... তবে সন্ততিসাইজ যখন অদলবদলের বিষয়বস্তুগুলি পরীক্ষা করে তখন "0000" এর মতো দেখাবে?
সিগন্যাল 15

অপারেটিং সিস্টেমের নীচে একটি স্তর এ সব ঘটে। যতক্ষণ না ওএস সম্পর্কিত, কোনও ব্লকের ডেটা আবার লিখিত না হওয়া পর্যন্ত সেখানে থাকে। পঠন-মুছা-লেখার চক্রটি পরিচালনা করা ড্রাইভের দায়িত্ব।
মাইকিবি

উত্তর:


1

দেখে মনে হচ্ছে যে বাতিল_স্বামী_ক্লাস্টারটি কেবল স্ক্যান_স্বেপ_ম্যাপ থেকে কল করা হয় যা পরিবর্তে get_swap_page বা get_swap_page_of_type থেকে ডাকা হয় । সুতরাং আমি যদি সঠিক হয়ে থাকি তবে তা ছাড়ানো কেবল তখনই ঘটে যখন কোনও নতুন অদলবদ পৃষ্ঠা বরাদ্দ হতে চলেছে, যখন কোনও পৃষ্ঠা মুক্ত হয় না।


এটি বাগের মতো শোনাচ্ছে।
ক্যাস্পার্ড

2
এটি কোনও বাগ নাও হতে পারে। এইভাবে লিনাক্স একবারে একের পরিবর্তে অনেকগুলি পৃষ্ঠা একবারে ফেলে দিতে পারে discard
লভ

1

এটি আপনার সিস্টেমে --discard=onceডিফল্ট হিসাবে থাকতে পারে । আপনি কি একটি নির্দিষ্ট বাতিল বিকল্পের সাহায্যে মাউন্ট করার চেষ্টা করেছেন?

# nano /etc/fstab
________________________________________________________________
...
/dev/sda2    none    swap    ..., --discard=pages,...    ...
...

এবং এই মত জোর করে:

# swapon --discard=pages /dev/sda2

আপনি কোনও fstrimপরিষেবা করার চেষ্টা করতে পারেন বা এটি ইতিমধ্যে উপলব্ধ থাকলে এটি কনফিগার করতে পারেন।


-1

আমি যখন স্ক্রিপ্টটি বন্ধ করি তখন এটি অদলবদ বরাদ্দকরণ সহ সমস্ত মেমরি প্রকাশ করে, "স্বপন-এস" সিস্টেমে কোনও অদলবদ ব্যবহার করে না। এই মুহুর্তে, এটি প্রত্যাশা করা হয়েছে যে লিনাক্স অদলবদল করে অদলবদলের অংশটি ব্যাকগ্রাউন্ডে ফেলে দিতে শুরু করে, তবে এটি কার্যকর হয় না , সেক্টরের সামগ্রীগুলি এখনও "4141", এমনকি কয়েক ঘন্টা পরে।

অদলবদলের বিষয়বস্তুগুলি কার্যকরভাবে "বাতিল" করা হয় যখন swapon -s"কোনও সোয়াপ ব্যবহার করা হয় না" ফিরে আসে The সিস্টেমগুলি ব্লকগুলির বিষয়বস্তুগুলিকে ওভাররাইট করতে যাচ্ছে না (ভরাট ডাব্লু / "4141") কারণ এটি একটি এসএসডি এবং অতিরিক্ত লেখাগুলির জীবনকে সংক্ষিপ্ত করে দেবে এসএসডি (কমপক্ষে, আমি ডকুমেন্টেশন থেকে দূরে সরিয়ে নিয়েছি)


5
তাহলে discardমাউন্ট বিকল্প ব্যবহার করা হয় TRIM কমান্ড এড়াতে অন্তর্নিহিত সলিড-স্টেট ড্রাইভ পাঠানো উচিত লেখ বিকাস এসএসডি ডিস্কে সমস্যা। কমপক্ষে, এই উপায়টি অন্যান্য ফাইল সিস্টেম যেমন ext4 এর মতো।
সান্টিসাইজ

স্পষ্টরূপে, এর ফলে এইচডিপিআরএম কমান্ডটি কেবল শূন্যগুলিই পড়তে পারে তবে এসএসডি আবর্জনা সংগ্রহকারী দৌড়ানোর সুযোগ
পেলেই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.