আমি কেবল জরুরী অবস্থার জন্য অদলবদল স্থানটি কীভাবে ব্যবহার করব?


41

আমার কাছে 8 গিগাবাইট র‌্যাম এবং 16 জিবি সোয়্যাপযুক্ত একটি ডেবিয়ান (বাস্টার) ল্যাপটপ রয়েছে । আমি একটি দীর্ঘ দীর্ঘ কাজ চালাচ্ছি। এর অর্থ আমার ল্যাপটপটি ছয় দিন ধরে মন্থর অবস্থায় রয়েছে।

এটি করার সময় সময়ে সময়ে আমার ল্যাপটপটিকে ল্যাপটপ হিসাবে ব্যবহার করা দরকার। এটি কোনও সমস্যা হওয়া উচিত নয়; দীর্ঘ চলমান কাজটি I / O আবদ্ধ, একটি USB হার্ড ডিস্কে স্টাফের মাধ্যমে কাজ করে এবং খুব বেশি র‍্যাম (<200 এমবি) বা সিপিইউ (<4%) নেয় না।

সমস্যাটি যখন আমি কয়েক ঘন্টার পরে আমার ল্যাপটপে ফিরে আসি তখন এটি খুব কম হয়ে যায় এবং স্বাভাবিক অবস্থায় ফিরে আসতে 30 মিনিট সময় নিতে পারে। এটি এতটাই খারাপ যে ক্রাশ-মনিটরসগুলি তাদের সম্পর্কিত অ্যাপ্লিকেশনগুলিকে হিমায়িত করা (বিশেষত ব্রাউজার উইন্ডোজ) হিসাবে ফ্ল্যাগ করে এবং জিনিসগুলি ভুলভাবে ক্র্যাশ হওয়া শুরু করে।

সিস্টেম মনিটরের দিকে তাকালে, প্রায় অর্ধেক ব্যবহৃত 2.5 জিবি অদলবদলে স্থানান্তরিত হয়। আমি নিশ্চিত করেছি যে অদলবদল স্থান ( swapoff /dev/sda8) সরিয়ে এটিই সমস্যা । আমি যদি এটিকে অদলবদল ছাড়াই ছেড়ে দিই তবে এটি 24 ঘন্টা পরে প্রায় তাত্ক্ষণিকভাবে ফিরে আসে। অদলবদল সহ, এটি প্রথম পাঁচ মিনিটের জন্য কার্যত একটি ইট যা কেবল ছয় ঘন্টা বাকি ছিল। আমি নিশ্চিত করেছি যে আমি দূরে থাকাকালীন মেমরির ব্যবহার কখনও 3 গিগাবাইটের বেশি হয় না।

আমি হ্রাস চেষ্টা করেছি swappiness ( আরো দেখুন: উইকিপিডিয়া ) এর মান 10এবং 0, কিন্তু সমস্যা এখনও চলতেই থাকে। দেখে মনে হচ্ছে এক দিন নিষ্ক্রিয় হওয়ার পরে কার্নেল বিশ্বাস করে যে পুরো জিইউআইয়ের আর প্রয়োজন নেই এবং এটি র্যাম থেকে মুছে ফেলে (এটি ডিস্কে বদলে দেয়)। দীর্ঘকাল ধরে চলমান কাজটি বিশাল ফাইল ট্রি দ্বারা পড়া এবং প্রতিটি ফাইল পড়া। সুতরাং এটি হতে পারে কার্নেল ভেবে বিভ্রান্ত হয়ে পড়েছে যে ক্যাশে সাহায্য করবে। কিন্তু 1 বিলিয়ন ডলার ফাইলের নাম সহ 2 টিবি ইউএসবি এইচডি এর একক সুইপতে, একটি অতিরিক্ত জিবি র‌্যাম পারফরম্যান্সে খুব বেশি সহায়তা করবে না। এটি একটি সস্তার হার্ড ড্রাইভ সহ একটি সস্তা ল্যাপটপ। এটি কেবলমাত্র যথেষ্ট পরিমাণে র‍্যামের মধ্যে ডেটা লোড করতে পারে না।

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

"জরুরি অবস্থা" এর সঠিক সংজ্ঞাটি বিতর্কের বিষয় হতে পারে for তবে আমি কী বলতে চাইছি তা স্পষ্ট করে বলতে হবে: একটি জরুরি অবস্থা হবে যেখানে প্রক্রিয়াগুলি অদল-বদল করা বা হত্যা করা ছাড়া সিস্টেমটি অন্য কোনও বিকল্প ছাড়াই চলে।


জরুরি অবস্থা কী? - তোমাকে কি সত্যিই জিজ্ঞাসা করতে হবে? ... আমি আশা করি আপনি কখনও নিজেকে জ্বলন্ত ভবনে খুঁজে পাবেন না!

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


চূড়ান্ত সম্পাদনা: আমি একটি উত্তর গ্রহণ করেছি যা অপারেটিং সিস্টেমের স্তরে আমি যা চেয়েছিলাম তা হুবহু করে। ভবিষ্যতের পাঠকদেরও অ্যাপ্লিকেশন স্তরের সমাধান সরবরাহের উত্তরগুলি নোট করা উচিত।


11
"জরুরী অবস্থা" সংজ্ঞায়িত করুন এবং অদলবদর যখন ব্যবহৃত হবে তখন এটি কোনও সাধারণ পরিস্থিতি থেকে কীভাবে আলাদা সে সম্পর্কে কিছু বলুন।
Kusalananda

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

2
না এটি সঠিক নয়। এটি কেবল জরুরী পরিস্থিতিতেই করা হয় না। খুব কমপক্ষে আমি ভেবেছিলাম আমার প্রশ্নটি এটিকে পরিষ্কার করে দিয়েছে যে আমি কেবলমাত্র 8 গিগাবাইটের মধ্যে 3 জিবি ব্যবহার করেছি ... এটি খুব কমই জরুরি অবস্থা তবে কার্নেল যেভাবেই অদলবদল করছে। আমি আপনাকে অদলবদল এবং আশেপাশের বিষয়গুলি পড়তে পরামর্শ দিচ্ছি। অদলবদলের বিভিন্ন কারণ নিয়ে বেশ খানিকটা আলোচনা চলছে। এটি প্রশংসনীয় যে আমি এমন একটি ধারণা চাইছি যা কার্নেলের মধ্যে নেই, তবে আমার কাছে এটি জিজ্ঞাসা করার কারণগুলি যথাযথভাবে ন্যায়সঙ্গত ..
ফিলিপ কুলিং

4
আমি পরামর্শটি সর্বদা "অদলবদল ছাড়াই কখনও চালানো হয়নি" তা স্বীকার করি। তবে মেমরির আকারগুলি মাপানো হার্ড ড্রাইভ (এইচডিডি নয় এসএসডি নয়) পড়ার / লেখার গতি মানে যা অদলবদু ক্রমবর্ধমান একটি খারাপ ধারণা। কারও কারও মতে 8 জিবি র‌্যাম + 8 গিগাবাইট সোয়াপ 16 গিগাবাইট র‌্যাম + 0 অদলবদল সম্পাদন করবে believe যদি এটি সত্যই করে তোলে তবে লিনাক্স কার্নেলের সাথে কিছু খুব খারাপ।
ফিলিপ কুলিং

7
@ ফিলিপ কাপলিং: না, মোদ্দা কথাটি হল যে 16 জিবি র‌্যাম + 16 গিগাবাইট অদলবদল 16 গিগাবাইট এবং 0 টি অদলবদলকে ছাড়িয়ে যাবে - বিশেষত যখন আপনার
কোডটির

উত্তর:


11

আজকাল এত বড় অদলবদল করা প্রায়শই একটি খারাপ ধারণা। ওএস যখন কিছু গিগাবাইট মেমরি অদলবদল করতে চলেছে, ততক্ষণে আপনার সিস্টেমটি ইতিমধ্যে মৃত্যুর কবলে গিয়েছিল (আপনি যা দেখেছিলেন তার মতো)

একটি ছোট ব্যাকআপ swap পার্টিশন ব্যবহার করাzram ভাল । ChromeOS, অ্যান্ড্রয়েড এবং বিভিন্ন লিনাক্স ডিস্ট্রসের মতো অনেকগুলি ওএস বছরের পর বছর ধরে ডিফল্টরূপে জ্রামকে সক্ষম করেছে, বিশেষত কম র‌্যামযুক্ত সিস্টেমগুলির জন্য। এটি এইচডিডি অদলবদলের চেয়ে অনেক দ্রুত এবং আপনি এক্ষেত্রে সিস্টেমের প্রতিক্রিয়াটি স্পষ্টভাবে অনুভব করতে পারেন। কোনও এসএসডি-তে কম, তবে এখানে মাপদণ্ডের ফলাফল অনুসারে এটি ডিফল্ট lzo অ্যালগরিদম এমনকি এখনও দ্রুত বলে মনে হচ্ছে। আপনি সামান্য কিছুটা কম কম্প্রেশন অনুপাতের সাথে আরও ভাল পারফরম্যান্সের জন্য lz4 এ পরিবর্তন করতে পারেন । এটি ডিকোডিংয়ের গতিটি অফিসিয়াল বেঞ্চমার্কের ভিত্তিতে লজোর চেয়ে প্রায় 5 গুণ বেশি গতিযুক্ত

এছাড়াও আছে zswapযদিও আমি এটা নিইনি। সম্ভবত একটি চেষ্টা মূল্য এবং আপনার ব্যবহারের ক্ষেত্রে ভাল যা তুলনা

তারপরে আর একটি পরামর্শ হ'ল এই আইও-বাউন্ড প্রক্রিয়াগুলির অগ্রাধিকার হ্রাস করা এবং সম্ভবত উচ্চতর অগ্রাধিকারের ভিত্তিতে একটি টার্মিনাল চালানো সম্ভব হবে যাতে আপনি সিস্টেমটি উচ্চ লোডে থাকা অবস্থায় এই মুহুর্তে কমান্ডগুলি চালাতে পারেন you

আরও পড়া


ঠিক তাই আমি বুঝতে পেরেছি, আপনি বলছেন যে আমি কোনও zramব্লক ডিভাইস তৈরি করতে পারি , এটি এইচডিডি পার্টিশন হিসাবে নিম্ন অগ্রাধিকারের স্বাপের সাথে অদলবদল হিসাবে ব্যবহার করতে পারি?
ফিলিপ কুলিং

@ ফিলিপচুলিং আপনি যদি এইচডিডি ব্যবহার করছেন তবে হ্যাঁ, অবশ্যই আপনার একটি জরাম বা অনুরূপ সমাধান ব্যবহার করা উচিত। অদলবদলের অগ্রাধিকারটি জ্রামের চেয়ে কম হওয়া উচিত, যাতে লিনাক্স প্রথমে জ্রামটি ব্যবহার করার চেষ্টা করে এবং তারপরে এটি স্ব্যাপটি বিবেচনা করবে। আপনি যদি উবুন্টু ব্যবহার করেন তবে zram-config প্যাকেজটি ইতিমধ্যে আপনার জন্য অগ্রাধিকার সেটিংসের যত্ন নেয়
ফুক্লভি

3
আমি এই উত্তরটি গ্রহণ করছি কারণ এটি যা বলেছে ঠিক তা করে বলে মনে হচ্ছে। যদি আমি এখনও আমার 16 গিগাবাইট অদলবদলকে হ্রাস করা অগ্রাধিকার হিসাবে সক্ষম করে রেখেছি তবে zswap শেষ হয়ে গেলে কর্নেলটি কেবল তখনই এটি ব্যবহার করবে। IE: "জরুরী অবস্থায়" " ডিবিয়ান-বাস্টার সম্পর্কে দ্রষ্টব্য, কেবল zram- সরঞ্জামগুলি ইনস্টল করে এটি সেটআপ করা খুব সহজ।
ফিলিপ কাপলিং

25

একটি সমাধান হ'ল মেমরি সিগ্রুপ কন্ট্রোলার সক্ষম হয়েছে তা নিশ্চিত করা (আমি মনে করি এটি ডিফল্টরূপে এমনকি অর্ধ-সাম্প্রতিক কার্নেলের মধ্যে রয়েছে, অন্যথায় আপনাকে cgroup_enable=memoryকার্নেল কমান্ড লাইনে যুক্ত করতে হবে)। তারপরে আপনি নিজের আই / ও নিবিড় কাজটি একটি মেমোরি সীমা সহ একটি ক্রাগে চালাতে পারেন, এটি যে পরিমাণ ক্যাশে সেবন করতে পারে তার পরিমাণও সীমিত করে।

আপনি systemd হল ব্যবহার করেন, তাহলে আপনি নির্ধারণ করতে পারেন +MemoryAccounting=yesএবং হয় MemoryHigh/ MemoryMaxবা MemoryLimitইউনিট, বা একটি ফালি এটা ধারণকারী (আপনি নির্ধারিত সঠিক cgroup- v1 এ বা v2 ব্যবহার করছেন উপর depeneds)। যদি এটি একটি স্লাইস systemd-runহয় তবে আপনি স্লাইসে প্রোগ্রামটি চালাতে ব্যবহার করতে পারেন ।

স্মৃতি সীমা সহ ফায়ারফক্স চালানোর জন্য আমার একটি সিস্টেমের সম্পূর্ণ উদাহরণ। দ্রষ্টব্য এটি cgroups v2 ব্যবহার করে এবং এটি আমার ব্যবহারকারী হিসাবে সেট আপ করা হয়েছে, রুট নয় (ভি 1 এর তুলনায় v2 এর অন্যতম সুবিধা হ'ল এটিকে নন-রুটে স্থান দেওয়া নিরাপদ, সুতরাং সিস্টেম্ড তা করে)।

$ systemctl --user cat mozilla.slice 
# /home/anthony/.config/systemd/user/mozilla.slice
[Unit]
Description=Slice for Mozilla apps
Before=slices.target

[Slice]
MemoryAccounting=yes
MemoryHigh=5G
MemoryMax=6G

$ systemd-run --user --slice mozilla.slice --scope -- /usr/bin/firefox &
$ systemd-run --user --slice mozilla.slice --scope -- /usr/bin/thunderbird &

আমি ব্যবহারকারীর একজনকে কাজ করতে পেলাম আমাকে একটি ফালি ব্যবহার করতে হয়েছিল। সিস্টেম ওয়ান কেবলমাত্র সার্ভিস ফাইলটিতে (বা পরিষেবা ব্যবহার systemctl set-propertyকরে) বিকল্পগুলি রেখে কাজ করে ।

এখানে একটি উদাহরণ পরিষেবা (সিগ্রুপ ভি 1 ব্যবহার করে) দেওয়া হয়েছে, শেষ দুটি লাইন নোট করুন। এটি সিস্টেমের অংশ (পিড = 1) উদাহরণ।

[Unit]
Description=mount S3QL filesystem
Requires=network-online.target
After=network-online.target

[Install]
WantedBy=multi-user.target

[Service]
Type=forking
User=s3ql-user
Group=s3ql-user
LimitNOFILE=20000
ExecStartPre=+/bin/sh -c 'printf "S3QL_CACHE_SIZE=%%i\n" $(stat -c "%%a*%%S*.90/1024" -f /srv/s3ql-cache/ | bc) > /run/local-s3ql-env'
ExecStartPre=/usr/bin/fsck.s3ql  --cachedir /srv/s3ql-cache/fs1 --authfile /etc/s3ql-authinfo  --log none «REDACTED»
EnvironmentFile=-/run/local-s3ql-env
ExecStart=/usr/bin/mount.s3ql --keep-cache --cachedir /srv/s3ql-cache/fs1 --authfile /etc/s3ql-authinfo --cachesize ${S3QL_CACHE_SIZE} --threads 4
ExecStop=/usr/bin/umount.s3ql /mnt/S3QL/
TimeoutStopSec=2m
MemoryAccounting=yes
MemoryLimit=1G

ডকুমেন্টেশন রয়েছে systemd.resource-control(5)


1
আপনি কেবল ব্যবহার করে তুলনামূলক এবং বহনযোগ্য কিছু করতে পারবেন না ulimit?
পুরাতন প্রো

1
@ ওল্ডপ্রো আসলেই নয়। প্রথমত, পৃষ্ঠের ক্যাশে সহ মোট মেমরির ব্যবহারের উপরে আফাইক কোনও উলামিট নেই (যা এখানে ব্যবহারের ফলে অতিরিক্ত হয়ে উঠছে)। দ্বিতীয়ত, মেমরির জন্য ইউলিমিট প্রতি প্রক্রিয়াজাতকরণ, দীর্ঘমেয়াদী টাস্ক কাঁটাচামচ করা সত্ত্বেও সিগ্রুপগুলি কাজ করে।
ডারোবার্ট

আমি ভেবেছিলাম নতুন সিস্টেমগুলিতে মেমরি অ্যাকাউন্টিং ডিফল্টরূপে সক্ষম করার কারণটি systemdসংস্করণ 238 এর পরিবর্তনের কারণে ।
সোর্সজেডি

1
@ সোর্সজেডি এটি তুলনামূলকভাবে সাম্প্রতিক। যখন মেমরি নিয়ামকটি প্রথম প্রবর্তন করা হয়েছিল, কেবল এটি উপলব্ধ (এমনকি ব্যবহারের মধ্যে নেই) থাকার জন্য যথেষ্ট পরিমাণে পারফরম্যান্স ব্যয় হয়েছিল যে কিছু লোক কমপক্ষে এটি ডিফল্টরূপে অক্ষম করে এবং এটি সক্ষম করতে আপনাকে সেই কার্নেল কমান্ড লাইন আর্গুমেন্টটি পাস করতে হয়েছিল। পারফরম্যান্সের সমস্যাগুলি ঠিক করা হয়েছিল, তাই এটি পরিবর্তিত হয়েছিল এবং আরও সম্প্রতি সিস্টেমড এটি ডিফল্টরূপে সক্রিয় করে।
ডারোবার্ট

14

দেখে মনে হচ্ছে এক দিন নিষ্ক্রিয় হওয়ার পরে কার্নেল বিশ্বাস করে যে পুরো জিইউআইয়ের আর প্রয়োজন নেই এবং এটি র্যাম থেকে মুছে ফেলে (এটি ডিস্কে বদলে দেয়)।

কার্নেল করছে রাইট আর ™ এটা বিশ্বাসী। কেন এটি র‌্যামে অব্যবহৃত 1 মেমরি রাখবে এবং তাই এটিকে ক্যাশে বা অন্য কিছু হিসাবে ব্যবহার করার পরিবর্তে মূলত এটিকে নষ্ট করবে?

আমার মনে হয় না লিনাক্স কার্নেলটি কৃতজ্ঞতাজনকভাবে বা প্রত্যাশিত পৃষ্ঠাগুলি সরিয়ে ফেলছে, সুতরাং এটি যদি এটি করে তবে অবশ্যই এটি র‌্যামে অন্য কিছু সংরক্ষণ করা উচিত, যাতে আপনার দীর্ঘস্থায়ী কার্য সম্পাদন বা উন্নততর লক্ষ্য অর্জন করা যায় with

আপনি যদি জানেন যে কখন আপনাকে আপনার ল্যাপটপটি আগে থেকে পুনরায় ব্যবহার করতে হবে, আপনি অদলবদল পরিষ্কারের সময় নির্ধারণের জন্য atকমান্ডটি (বা crontab) ব্যবহার করতে পারেন swapoff -a;swapon -a

সোয়াপ পরিষ্কারের হিসাবে Overkill হতে পারে, এবং এমনকি হলে OOM kills হত্যাকারী আরম্ভ যদি কোনো কারণে না র্যাম সবকিছু হইয়া জন্য, আপনি হয়তো শুধু "unswap" 2 চলমান অ্যাপ্লিকেশনের তালিকা আপনি পুনরুজ্জীবিত করতে চান সবকিছু সম্পর্কিত।

এটি করার একটি উপায় হ'ল gdbআক্রান্ত প্রতিটি প্রক্রিয়াটির মতো একটি ডিবাগার সংযুক্ত করা এবং কোর ডাম্প জেনারেশন ট্রিগার করা:

# gdb -p <pid>
...
generate-core-dump /dev/null
...
quit

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

অন্যথা, আপনি শুধু নিয়মিত ফাইল ক্যাশে অনুনাদী দ্বারা ফ্লাশ পারে 1বা 3করতে /proc/sys/vm/drop_cachesসিউডো-ফাইল আগে ওএস মনে এটি একটি ভাল ধারণা আপনার GUI এপ্লিকেশন এবং পরিবেশ আউট অদলবদল।

দেখুন লিনাক্স সিস্টেমে আপনি কীভাবে বাফার এবং ক্যাশে খালি করবেন? বিস্তারিত জানার জন্য.

1 অর্থে অব্যবহৃত: উল্লেখযোগ্য সময়ের পরে আর সক্রিয়ভাবে ব্যবহার করা হয়নি, স্মৃতিটি এখনও তার মালিকদের জন্য প্রাসঙ্গিক।
2 অদলবদলে সঞ্চিত র‍্যাম পৃষ্ঠাগুলিতে আবার রাখুন।


2
সম্ভাব্য কারণ সম্পর্কে চিন্তাভাবনার জন্য ধন্যবাদ। এটি প্রাসঙ্গিক হতে পারে বলে আমি প্রশ্নটিতে কিছুটা যুক্ত করেছি। আমি আশ্চর্য হয়েছি যদি অ্যাপ্লিকেশনটির নিজস্ব স্মৃতিতে ক্যাশিংয়ের অগ্রাধিকারটি কম করার কোনও উপায় থাকে।
ফিলিপ কুলিং

5
"আমি মনে করি না লিনাক্স কার্নেল কৃতজ্ঞতাযুক্ত বা প্রত্যাশিত পৃষ্ঠাগুলি অদলবদল করছে তাই যদি এটি হয় তবে অবশ্যই এটি র‌্যামে অন্য কিছু সংরক্ষণ করা উচিত, ফলে কর্মক্ষমতা উন্নত হবে।" - আমি মনে করি এই শব্দটি কিছুটা অস্পষ্ট। কার্নেল অবশ্যই অদলবদল করার জন্য পৃষ্ঠাগুলি লিখবে, যখনই এটির সুযোগ থাকবে (যেমন: সামান্য ডিস্ক I / O আছে)। এটি তবে তাদের র‍্যাম থেকে সরিয়ে দেবে না। এইভাবে, আপনার উভয় পৃথিবীর মধ্যে সেরা: আপনার যদি দ্রুত সেই পৃষ্ঠাগুলি আবার প্রয়োজন হয় তবে সেগুলি ইতিমধ্যে র‍্যামে রয়েছে এবং এর কিছুই করার নেই। যদি কোনও জরুরি অবস্থা (ওপি যেমন বলে থাকে), আপনার কেবল এই পৃষ্ঠাগুলি র‍্যামে বিনামূল্যে দরকার, কারণ
জার্গ ডব্লু মিটাগ

3
… তারা ইতিমধ্যে বদলে গেছে। এবং এ কারণেই আপনি কেবলমাত্র "জরুরী পরিস্থিতিতে" অদলবদলটি ব্যবহার করতে চান না , কারণ একটি জরুরী সময়কালে, সিস্টেমটি ইতিমধ্যে চাপের মধ্যে রয়েছে এবং সর্বশেষে আপনি যেটি চান সেটি হল এতে প্রচুর পরিমাণে ডিস্ক I / O যুক্ত করা।
জার্গ ডব্লু মিটাগ

2
এটিকে স্বাপ আউট করার কারণটি সম্ভবত দীর্ঘকাল চলমান প্রক্রিয়া: এটি ডিস্কে ফাইল অ্যাক্সেস করছে। মেমোরিতে থাকা ফাইলগুলি জিইউআইয়ের স্মৃতির চেয়ে সাম্প্রতিককালে ব্যবহৃত হবে।
jpmc26

3
@ জার্গডব্লিউমিত্যাগ আপনার কাছে কি প্রমাণ আছে যে লিনাক্স কার্নেলটি যখন আই / ও এর ব্যবহার কম হয়, অদৃশ্যভাবে অদলবদল পৃষ্ঠাগুলি "কেবলমাত্র ক্ষেত্রে" লিখতে থাকে, অর্থাৎ এগুলি র‌্যাম থেকে মুক্ত না করে?
jlliagre

10

প্রক্রিয়াটি আপনি নিজের তৈরি কিছু চালিয়ে যাচ্ছেন?

যদি তা হয় তবে O_DIRECTপতাকাটি ব্যবহার করে ফাইলগুলি খোলার জন্য আপনার কোডটি টুইটারে মূল্যবান হতে পারে যা ম্যানুয়াল পৃষ্ঠাটির উদ্ধৃতি দিতে পারে -

এই ফাইল থেকে এবং থেকে I / O এর ক্যাশে প্রভাবগুলি হ্রাস করার চেষ্টা করুন। সাধারণভাবে এটি কর্মক্ষমতা হ্রাস পাবে, তবে বিশেষ পরিস্থিতিতে যেমন অ্যাপ্লিকেশনগুলি তাদের নিজস্ব ক্যাচিং করে তখন এটি কার্যকর। ফাইল I / O সরাসরি ব্যবহারকারী-স্পেস বাফারগুলিতে / থেকে করা হয়। ও_আইডিআরসিটি পতাকাটি নিজস্বভাবে ডেটা স্থানান্তর করার চেষ্টা করে তবে ওএসওয়াইএনসি পতাকাটির গ্যারান্টি দেয় না যে ডেটা এবং প্রয়োজনীয় মেটাডেটা স্থানান্তরিত হয়েছে। সিঙ্ক্রোনাস I / O গ্যারান্টি হিসাবে, O_YREC এর পাশাপাশি O_SYNC ব্যবহার করা উচিত। আরও আলোচনার জন্য নীচের নোটগুলি দেখুন।


1
অন্য একটি অনুরূপ (তবে সম্ভবত সহজ, কারণ আমি নিশ্চিত যে O_DIRECT এর প্রান্তিককরণ বিধিনিষেধ রয়েছে এবং আপনি যদি আপনার পাঠ্য বড় না হন তবে আপনি অভিনয়টি মেরে ফেলবেন) কার্নেলটি জানাতে আপনার অভিনবতা হবে যে আপনাকে আবার সেই ডেটা লাগবে না, এটি থেকে ফ্লাশ করে পৃষ্ঠা ক্যাশে (ফোনে বা লিঙ্কগুলি সরবরাহ করবে, দুঃখিত)
ডারোবার্ট

1
@डरবার্ট সবার জন্য nocacheকমান্ডটি এটি করার জন্য একটি সুবিধাজনক হ্যাক। (এটি কিছু লিবিসি কল হাইজ্যাক করার জন্য এলডি_প্রেলোয়াড ব্যবহার করে)।
সোর্সজেডি

6

এখানে একটি ধারণা দেওয়া হয়েছে, যা আমি নিজে চেষ্টা করে দেখিনি (এবং আমি দুঃখিত যে এই মুহূর্তে পরীক্ষার জন্য আমার এখনই সময় নেই)।

মনে করুন আপনি আপনার ব্যাকগ্রাউন্ড প্রক্রিয়াটির জন্য কেবল 512 এমবি মেমরির সাহায্যে একটি ছোট ভিএম তৈরি করেছেন আমি নিশ্চিত নই যে আপনি এটির কোনও অদলবদল, আপনার কল এবং আপনার হোস্ট সিস্টেমে অদলবদল স্যুইচ করতে চান কিনা।


3

অদলবদু সরান বা প্রায় 20% হ্রাস করুন ( সিস্টেমগুলির সাথে পৃথক হতে পারে ) কারণ ওএসগুলি অদলবদলটি কয়েক বছর আগে যেমন ব্যবহার করেছে তেমনভাবে ব্যবহার করছে না। এটি সম্ভবত আপনার কিছু প্রশ্নের উত্তর দেয়:

-> সরকারী redhat.com

নীচে কিছু রেড হ্যাট তথ্য,

অতীতে, কিছু অ্যাপ্লিকেশন বিক্রেতারা র‌্যামের সমান আকারের বা তার চেয়েও দ্বিগুণ র‌্যামের স্বাপের প্রস্তাব দেয়। এখন আসুন 2 গিগাবাইট র‌্যাম এবং 2 জিবি স্বাপের সাহায্যে উল্লিখিত সিস্টেমটি কল্পনা করি। সিস্টেমে একটি ডাটাবেসটি ভুলভাবে 5 জিবি র‌্যাম সহ একটি সিস্টেমের জন্য কনফিগার করা হয়েছিল। একবার শারীরিক স্মৃতি ব্যবহার হয়ে গেলে, অদলবদল ব্যবহার হয়ে যায়। অদলবদল ডিস্কটি র‌্যামের চেয়ে অনেক ধীর গতিতে কাজটি কমে যায় এবং থ্র্যাশিং ঘটে। এই মুহুর্তে, এমনকি সিস্টেমে লগইনগুলিও অসম্ভব হয়ে উঠতে পারে। আরও এবং আরও বেশি মেমোরিতে লেখার সাথে সাথে অবশেষে শারীরিক- এবং অদলবদল মেমরি সম্পূর্ণরূপে নিঃশেষ হয়ে যায় এবং ওওম কিলার লাথি দেয়, এক বা একাধিক প্রক্রিয়া বন্ধ করে দেয়। আমাদের ক্ষেত্রে, যথেষ্ট পরিমাণে অদলবদল পাওয়া যায়, সুতরাং দুর্বল পারফরম্যান্সের সময় দীর্ঘ।

এবং

https://wiki.debian.org/Swap

উপরে দেবিয়ান লিঙ্কের অংশ,

সোয়াপ ব্যবহারের পরিমাণের সাথে সম্পর্কিত তথ্য এবং বিবেচনাগুলি:

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

আপনি চেষ্টা করতে পারেন:

"লিনাক্সে অদলবদাকে অক্ষম করার সর্বোত্তম উপায়"


ব্যক্তিগত নোট:


যেহেতু আমি 6 গিগাবাইট র‍্যাম করেছি এবং আমার সমস্ত সাম্প্রতিক লিনাক্স ওএসে। আমি অদলবদলের কোনও ইঙ্গিত কখনও দেখিনি। আমি এটা নির্ধারিত আমি আবশ্যক এটা বন্ধ পারেন স্থান জন্য (কয়েক গিগাবাইট বেশি) এবং কারণ এটি আমার সিস্টেম কখনো কখনো এসেছে।


1
অতীতে, কিছু অ্যাপ্লিকেশন বিক্রেতারা র‌্যামের সমান আকারের আকারের, এমনকি র‌্যামের দ্বিগুণও প্রস্তাব দিয়েছিলেন। আমি এটি দেখে অনেক বয়স্ক বোধ করি, একরকম ... যদিও এখনও আমার কাছে 8 528MB বাধা আছে এবং একটি 2.5 গিগাবাইটের মধ্যে এইচডিডি রয়েছে, কোনওভাবে সেই উক্তিটি - ভাল এটি এত দীর্ঘকাল আগে থেকে কিছু ... যদিও আকর্ষণীয় উদ্ধৃতি এবং এটি ব্যাখ্যা করতে পারে কেন আমি কয়েক বছর আগে একই ধরণের সমস্যা দেখেছি। আমি বিশ্বাস করি আমি এটি ঠিক করার জন্য সিস্কিটল ব্যবহার করেছি তবে প্রাক-প্রাক্কালে এটি ঠিক কী সেটিংস ছিল তা আমার মনে নেই।
প্রাইফটান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.