যখন র‌্যামে পর্যাপ্ত ফাঁকা স্থানের চেয়ে বেশি থাকে তখন কেন অদলবদল ব্যবহার করবেন?


124

র‌্যামের পরিবর্তে অদলবদল স্পেস ব্যবহার করা পিসি মারাত্মকভাবে কমিয়ে দিতে পারে ।

তাহলে কেন, যখন আমার পর্যাপ্ত র‍্যামের বেশি পাওয়া যায়, তখন আমার লিনাক্স সিস্টেম (আর্চ) অদলবদল ব্যবহার করে?

নীচে আমার কঙ্কি আউটপুট চেকআউট করুন:

কঙ্কি আউটপুট

এছাড়াও, আমি যে গতি এবং সিস্টেম-প্রতিক্রিয়াশীলতার সমস্যার মুখোমুখি হচ্ছি তার কারণ কি এটি হতে পারে?

এর আউটপুট free -m:

$ free -m
             total       used       free     shared    buffers     cached
Mem:          1257       1004        252          0         51        778
-/+ buffers/cache:        174       1082
Swap:          502        144        357

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

7
কখনও কখনও, আপনি যদি পুরো র‍্যামের কারণে অতীতে অদলবদল ব্যবহার করেন তবে আপনার এমন পরিস্থিতি থাকতে পারে যেখানে আগে অদলবদল করা ডেটা সেখানে থাকে কারণ এটি এই মুহুর্তে দরকারী তথ্য নয়।
টোটার

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

উত্তর:


93

লিনাক্স সিস্টেমগুলিতে র‌্যাম মুক্ত থাকলেও কিছু অদলবদল করা স্বাভাবিক use লিনাক্স কার্নেল খুব কম ব্যবহৃত হয় এমন মেমরি পৃষ্ঠাগুলি অদলবদল করবে (উদাহরণস্বরূপ, gettyযখন আপনি কেবল এক্স 11 ব্যবহার করেন এবং কিছু অন্যান্য নিষ্ক্রিয় ডিমন)।

পর্যাপ্ত র‌্যাম উপলব্ধ না হলেই অদলবদল স্পেসের ব্যবহার একটি সমস্যা হয়ে দাঁড়ায় , এবং কার্নেল কেবল অ্যাপ্লিকেশন চালিয়ে যাওয়ার জন্য অবিচ্ছিন্নভাবে মেমরি পৃষ্ঠাগুলি অদলবদল করতে এবং র‍্যামে ফিরে যেতে বাধ্য হয়। এই ক্ষেত্রে, সিস্টেম মনিটর অ্যাপ্লিকেশনগুলি অনেক বেশি ডিস্ক আই / ও ক্রিয়াকলাপ দেখায়।

তুলনা করার জন্য, আমার উবুন্টু 10.04 সিস্টেম, দু'জন ব্যবহারকারী এক্স 11 সেশনে লগইন করে উভয়ই জিনোম ডেস্কটপে চলমান রয়েছে, M 600MB অদলবদল এবং 1 জিবি র‌্যাম (বাফার এবং এফএস ক্যাশে গণনা করছে না) ব্যবহার করে, তাই আমি বলব যে অদলবদলের জন্য আপনার পরিসংখ্যান ব্যবহার সাধারণ দেখায়


39
নিষ্ক্রিয় প্রোগ্রামগুলি অদলবদল করে, আপনার ফাইল ক্যাচিংয়ের জন্য আরও মেমরি রয়েছে। এবং এটি গতি বাড়ায়।
jmanning2k

91

এই আচরণটি এর মান সেট করে কনফিগার করা যেতে পারে:

/proc/sys/vm/swappiness

ডিফল্ট মান is০ হয় 0 এটিকে নির্ধারণ করার অর্থ যখন এখনও র‌্যাম বাকি আছে তখন কখনই অদলবদল ব্যবহার করবেন না এবং 100 যত তাড়াতাড়ি সম্ভব মেমোরিটিকে সরিয়ে দেয়।

অস্থায়ীভাবে মানটি পরিবর্তন করতে (পুনরায় বুটে হারিয়ে যাওয়া):

sudo sysctl vm.swappiness=10

স্থায়ীভাবে মান পরিবর্তন করতে, ফাইলটি সম্পাদনা করুন:

/etc/sysctl.conf

রুট হিসাবে (যেমন sudo nano /etc/sysctl.conf) এবং লাইনটি পরিবর্তন বা যুক্ত করুন (যদি না থাকে):

vm.swappiness

পছন্দসই মান। যদি এই ফাইলটি উপস্থিত না থাকে (যেমন আর্চ লিনাক্সে) তবে /etc/sysctl.d/99-sysctl.confতার পরিবর্তে চেষ্টা করুন।

বিনামূল্যে ফ্রি মেমরি পাওয়া যায় বা খারাপ কিনা তা নিয়ে কিছুটা বিতর্ক হয়েছে তবে উবুন্টু সাহায্য ডেস্কটপ সিস্টেমের জন্য 10 এর মূল্যের প্রস্তাব দেয়সেন্টোসের জন্য ডিজিটাল মহাসাগরের এই টিউটোরিয়ালটিও দেখুন ।


27
মনে রাখবেন যে, swappiness হ্রাস করে না অগত্যা একটি কার্যকারিতা বা সংবেদনশীলতা বৃদ্ধি মানে। আমি রিপোর্ট দেখা করেছি বৃদ্ধি ভাল পারফরম্যান্স মধ্যে swappiness অনুবাদ। আপনি যে কোনও কিছু পড়েছেন তাতে বিশ্বাস করবেন না যাতে মানদণ্ডগুলি অন্তর্ভুক্ত করে না এবং পরীক্ষা করে নিন যে বেনমার্কগুলি আপনার মতো একটি ওয়ার্ক লোড ব্যবহার করে।
গিলস

এটি কি পুনরায় বুট চালিয়ে যায়? আমি ভেবেছিলাম / প্রোক প্রতিটি বুট পুনরায় জেনারেট হয়েছিল।
হ্যান্ডিগ্যান্ডি

@ হ্যান্ডিগ্যান্ডি: স্থায়ীভাবে কীভাবে এটি পরিবর্তন করা যায় তার উত্তরে আমি তথ্য যুক্ত করেছি।
মার্সেল স্টিমবার্গ

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

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

46

লিনাক্স র‌্যামটি পূর্ণ হওয়ার আগে অদলবদল শুরু করে। কর্মক্ষমতা এবং প্রতিক্রিয়াশীলতার উন্নতি করার জন্য এটি করা হয়:

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

  • সিস্টেম নিষ্ক্রিয় থাকাকালীন পৃষ্ঠাগুলি অদলবদল করার মাধ্যমে প্রতিক্রিয়াশীলতা উন্নত হয়, মেমরিটি পূর্ণ থাকে না এবং কিছু প্রোগ্রাম চালু থাকে এবং কোনও কাজ শেষ করার জন্য আরও র‌্যামের অনুরোধ করে।

অদলবদল অবশ্যই সিস্টেমকে ধীর করে দেয় - তবে অদলবদলের বিকল্প অদলবদল নয়, এতে আরও বেশি র‌্যাম রয়েছে বা কম র‌্যাম ব্যবহার হচ্ছে।


সুতরাং, এক অর্থে, অদলবদল একটি ক্ষেত্রে পরিমাপ? যে, এবং হাইবারনেট জিনিস?
tshpang

@ শেপাপাং: আপনার ভার্চুয়াল মেমরির মানানসই পর্যাপ্ত অদলবদল "ক্ষেত্রে" নয়, এটি প্রয়োজনীয় (অন্যথায় মেমরির অভাবে আপনার প্রোগ্রামগুলি ক্রাশ হবে)।
গিলস

1
@ টেচেপাং: ওম হত্যাকারী হ'ল তাদের ক্রাশ হওয়ার কারণ। (প্রযুক্তিগতভাবে আপনি ওওএম কিলার ছাড়াই করতে পারেন এবং কিছু বরাদ্দ করতে সক্ষম না হয়েছিলেন তবে এটি সিস্টেম লক করার একটি ভাল সম্ভাবনা রয়েছে; ওওএম ঘাতক অ্যাডমিনের জন্য লগইন করতে সক্ষম হওয়ার সম্ভাবনা আরও একটু বেশি করে তোলে) গুরুত্বপূর্ণ প্রক্রিয়াগুলি চালিয়ে যাওয়ার জন্য))
গিলস

1
আমি আপনার বিন্দুটি বুঝতে পারি "সিস্টেম যখন অলস থাকে তখন পৃষ্ঠাগুলি অদলবদল করে মেমরিটি পূর্ণ হওয়ার চেয়ে" তবে লোকটি তার র‌্যামের 15% ব্যবহার করে না। প্রায় সম্পূর্ণ থেকে দূরে, তাই না? যদিও পুরো র‌্যামের কারণে আগের অদলবদল হতে পারে এই পরিস্থিতিটি ছেড়ে গেছে ...
টোটার

1
"লিনাক্স র‌্যামটি পূর্ণ হওয়ার আগেই অদলবদল শুরু করে" কখন? ঠিক
ইউশা আলেয়ুব

11

এটি একটি পুরানো পোস্ট, তবে আমি এখনও আমার চিন্তাভাবনা এখানে রাখার স্বাধীনতা গ্রহণ করব।

নীচে থেকে শুরু করে লিনাক্স প্রথমে মেমরিটিকে পৃষ্ঠাগুলিতে ভাগ করে দেয় (সাধারণত x86_64 সিস্টেমে প্রতি পৃষ্ঠায় 4K)। এরপরে, ভার্চুয়াল মেমরি তৈরি হয়, যার ম্যাপিং এমএমইউ (মেমরি ম্যানেজমেন্ট ইউনিট) ব্যবহার করে শারীরিক মেমরির সাহায্যে সম্পন্ন হয়।

প্রক্রিয়াগুলি ভার্চুয়াল মেমরি অঞ্চল থেকে মেমরি বরাদ্দ করা হয়, সুতরাং দয়া করে নোট করুন, আপনি যখন / প্রোম / মেমিনফো দেখবেন, আপনি ভার্চুয়াল মেমরির বিশদ হিসাবে VMalloc * দেখতে পাবেন।

যাক মেমোরির জন্য অনুরোধ করে এমন একটি প্রক্রিয়া রয়েছে যা বলুন (300MB বলুন - একটি ওয়েব ব্রাউজার)। প্রক্রিয়াটি ভার্চুয়াল মেমরি থেকে 300MB বরাদ্দ করা হবে, তবে এটি প্রয়োজনীয় নয় এটি মেমরি ম্যাপ করা হয় (এটি শারীরিক স্মৃতিতে ম্যাপ করা হয়)। মেমোরি পরিচালনার জন্য "কপিরাইট অন রাইটিং" ধারণা রয়েছে, যার মাধ্যমে যদি আপনার প্রক্রিয়াগুলি প্রকৃতপক্ষে ভার্চুয়াল মেমরি থেকে বরাদ্দকৃত মেমরিটি ব্যবহার করে (তবে এটি মেমরিটিতে কিছু লেখেন) তবেই এটি শারীরিক স্মৃতিতে ম্যাপ করা হয়। এটি কার্নেলকে একটি বহু-প্রক্রিয়া পরিবেশে দক্ষতার সাথে সঠিকভাবে কাজ করতে সহায়তা করে।

ক্যাশে কি?

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

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

বাফার কী?

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

পৃষ্ঠার ত্রুটিগুলি তখন কি?

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

কখন এবং কেন অদলবদল হয়?

পরিস্থিতি 1:

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

পরিস্থিতি 2:

বলুন আপনি সিস্টেমে প্রচুর ফ্রি মেমরি উপলব্ধ দেখতে পান। তারপরেও আপনি দেখতে পাচ্ছেন যে প্রচুর অদলবদল হচ্ছে। মেমরি খণ্ডিত হওয়ার সম্ভাব্য সমস্যা হতে পারে। এমন একটি প্রক্রিয়া বিবেচনা করুন, যা কার্নেল থেকে 50MB সংক্ষিপ্ত মেমরির দাবি করে। (নিয়মিত মনে রাখবেন)। স্পষ্টতই, কার্নেল বিভিন্ন প্রক্রিয়াগুলিতে এলোমেলোভাবে পৃষ্ঠাগুলি বরাদ্দ করত এবং তাদের কিছু মুক্ত করত। যাইহোক, আমরা যখন স্বচ্ছ মেমরির দাবি করি তখন এটির একটি অংশের সন্ধান করতে হবে যা প্রক্রিয়াগুলির চাহিদা পূরণ করে। যদি এটি এরকম কোনও স্মৃতি পেতে সক্ষম না হয় তবে এটি কিছু পুরানো স্মৃতি পৃষ্ঠাগুলির একটি অদলবদল করতে হবে এবং তারপরে সামঞ্জস্যযুক্তগুলি বরাদ্দ করতে হবে। এমনকি এ জাতীয় ক্ষেত্রে সোয়াপ আউট ঘটবে। কার্নেল ভার্চ ২.6 এবং তারপরের থেকে শুরু করে, এই জাতীয় খণ্ড সমস্যাগুলি হ্রাস পেয়েছে। তবে, যদি সিস্টেমটি দীর্ঘ সময় ধরে চলতে থাকে তবে এই জাতীয় সমস্যাগুলি এখনও আসতে পারে।

এই উদাহরণটি দেখুন ( vmstat আউটপুট )

2016-10-29 03:55:32 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
2016-10-29 03:55:32  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
2016-10-30 03:56:04 19 23 2914752 4692144 3344908 12162628 1660    1  8803 12701 4336 37487 14  7 40 38  0
2016-10-30 03:56:34  3 20 2889296 4977580 3345316 12026752 2109    2  8445 14665 4656 36294 12  7 46 34  0
2016-10-30 03:57:04  1 11 3418868 4939716 3347804 11536356  586 4744  2547  9535 3086 24450  6  3 59 33  0  <<<-----
2016-10-30 03:57:34  3 19 3456252 5449884 3348400 11489728 3291 13371  6407 17957 2997 22556  6  4 66 24  0
2016-10-30 03:58:04  7  6 4194500 5663580 3349552 10857424 2407 12240  3824 14560 2295 18237  4  2 65 29  0
2016-10-30 03:58:34  2 16 4203036 5986864 3348908 10838492 4601 16639  7219 18808 2575 21563  6  4 60 31  0
2016-10-30 03:59:04  3 14 4205652 6059196 3348760 10821448 6624 1597  9431  4357 1750 20471  6  2 60 31  0
2016-10-30 03:59:34  2 24 4206968 6053160 3348876 10777216 5221 2067 10106  7377 1731 19161  3  3 62 32  0
2016-10-30 04:00:04  0 13 4205172 6005084 3348932 10785896 6236 1609 10330  6264 1739 20348  4  2 67 26  0
2016-10-30 04:00:34  4 11 4206420 5996396 3348976 10770220 6554 1253 10382  4896 1964 42981 10  5 58 27  0
2016-10-30 04:01:04  6  4 4177176 5878852 3348988 10825840 8682  765 10126  2716 1731 32949  8  4 69 19  0

@ 2016-10-30 03:57:04, আমরা দেখতে পাচ্ছি যে এখনও নিখরচায় বিনামূল্যে র্যাম পাওয়া যায়। তবে, তারপরেও অদলবদল হয়েছে happened আমরা এই মুহুর্তে প্রসেস ট্রিটি পরীক্ষা করেছিলাম এবং আমরা এমন কোনও প্রক্রিয়া আসতে দেখিনি যা এত বেশি পরিমাণে মেমরির (মুক্ত মেমরির চেয়ে বেশি) দাবি করবে। স্পষ্ট সন্দেহ ছিল পরিস্থিতি 2 উপরে বর্ণিত। আমরা উপরের বন্ধু-ইনফো এবং জোনিনফোর লগগুলি পরীক্ষা করেছি (এগুলি পরীক্ষা করার জন্য প্রতিধ্বনি এম> / প্রোক / সিসারকি-ট্রিগার ব্যবহার করুন, আউটপুট সিসলোগে যায়)।

আমাদের একটি সাধারণ সিস্টেমের জন্য, জোন তথ্যের তুলনাটি এটি যায়। এবং ক্যাশে / ফ্রি / লো মেমের গ্রাফগুলিও নীচে উল্লেখ করা হয়েছে

জোন তথ্য

অদলবদল বিনামূল্যে কম

তথ্যের দিকে তাকালে, এটি স্পষ্ট যে নোড 0 এবং নোড 1 স্বাভাবিকের মধ্যে মেমরি বিভাজন রয়েছে (নোড এটি NUMA ভিত্তিক মেশিন, সুতরাং একাধিক নোড (আপনার সিস্টেমে তথ্য পরীক্ষা করার জন্য নিউম্যাক্টল দেখুন))।

ফ্রি মেমরি থাকা সত্ত্বেও অদলবদলের ব্যবহার বাড়ার কারণ মেমরি বিভাজনও একটি কারণ।


2
আপনার "পরিস্থিতি 2" এ, দাবি প্রক্রিয়াটি শারীরিক মেমরির বরাদ্দ দিচ্ছে কিনা তা আপনার স্পষ্ট করে দেওয়া উচিত যা অস্বাভাবিক ঘটনা। বেশিরভাগ প্রক্রিয়াগুলি কেবল ভার্চুয়াল মেমরির সাথেই কাজ করে যেখানে খণ্ডন প্রায় অপ্রাসঙ্গিক। আপনি সম্ভবত আরও ভালভাবে ব্যাখ্যা করতে চাইতে পারেন যে প্রদর্শিত সংখ্যা এবং চার্ট থেকে মেমরি বিভাজন রয়েছে কারণ এটি প্রথম দর্শনে স্পষ্ট নয়। ওহ, এবং উপায় দ্বারা, আপনি আসলে বিষয়ে কথা হয় সংলগ্ন মেমরি, আশা না সংক্রামক মেমরির ;-)
jlliagre

@ জেলিয়াগ্র্রে: ইনপুটগুলির জন্য ধন্যবাদ। আমি "সংহত" ত্রুটিটি সম্পাদনা করছি।
অনুগ্রহ সিনহা

5

আরও উপলব্ধ স্মৃতি আছে

প্রত্যেকের মতোই, হ্যাঁ অদলবদল আপনাকে অব্যবহৃত স্মৃতি থেকে মুক্তি দিতে সহায়তা করবে, যাতে এটি আপনাকে আরও স্মৃতি উপলব্ধ করতে সহায়তা করতে পারে।

ঘুমন্ত অবস্থায়

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

হাইবারনেটিং ফাংশন হওয়াই একটি প্রধান কারণ যা আমরা আজকাল দেখি যে অদলবদলের জন্য কমপক্ষে র‌্যামের আকার রাখতে পরামর্শ দিই। এই পদ্ধতিতে সিস্টেম সমস্ত ব্যবহৃত র‌্যামকে অদলবদলে রেখে হাইবারনেশনে যেতে পারে।

স্বল্প আসা

খেয়াল রাখুন যে একবার অদলবদল করার পরে কোনও প্রক্রিয়া ডেটা অদলবদলের পরেও অদলবদলে পড়তে পারে, যদি না সোয়াপটি এনক্রিপ্ট করা থাকে (অবশ্যই)।

হাইবারনেশনের সাহায্যে এনক্রিপ্ট হওয়া অদলবদল সমস্ত বিতরণের সাথে বাক্সের বাইরে কাজ করে না। পুনরায় শুরু হওয়ার আগে এনক্রিপ্ট করা ভলিউমটি সক্রিয় করার জন্য আপনার একটি ধ্রুবক এনক্রিপশন কী (কিছু সেটআপ এলোমেলোভাবে স্বাপ স্পেস এনক্রিপশন কী তৈরি করে) এবং একটি initrd / initramfs ব্যবহার করতে হবে।


3

সজ্জিত ফ্রেমওয়ার্কগুলিতে প্রচুর আধুনিক প্রোগ্রামগুলি তৈরি করা হয় যা প্রোগ্রামটি চালানোর জন্য আপনার আসলে খুব প্রয়োজন হয় না। এই অব্যবহৃত পৃষ্ঠাগুলি অদলবদল করে এমন ক্যাশে এবং প্রোগ্রামগুলির জন্য র‌্যামকে মুক্ত করে যা প্রকৃতপক্ষে র‌্যাম ব্যবহার করতে পারে।

আমি এখানে বেদনাদায়ক ব্যক্তিগত অভিজ্ঞতা থেকে কথা বলি।

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

তবে একটি খারাপ দিক রয়েছে: ফায়ারফক্স বড়। সত্যিই বড়. এটি ছিল একটি প্রজন্মের 1.x প্রকারের প্রকল্প, তাই তারা জিইউআই সমর্থন অপসারণ করার মতো জিনিসগুলি অর্জন করতে পারেনি [[*] আমার সাইটের কোনও প্রয়োজন হয়নি, তবে আমার হোস্টিং সরবরাহকারী ভিপিএস প্রযুক্তি ব্যবহার করেনি কারণ ' টি স্বাপের জায়গার অনুমতি দেয় না, সেই জিইউআই কোড এবং ফায়ারফক্সের অন্যান্য সমস্ত অংশ আমি আসল র‌্যাম খাইনি। স্মৃতি ক্লান্তির কারণে ক্রাশ না হয়ে কেবলমাত্র সাইটটি চালানোর জন্য আমার 512 এমবি র‌্যাম ন্যূনতম প্রয়োজন হয়েছিল । আমার ভিপিএসের যদি কিছু অদলবদল থাকে তবে আমি সম্ভবত 256 এমবি পরিকল্পনার মাধ্যমে পেতে পারতাম।

[*] কাঠামো থেকে জিইউআই কোড অপসারণ এমনকি কাম্য হতে পারে না, কারণ এই প্ল্যাটফর্মটির একটি সুবিধা উচ্চ-বিশ্বস্ততা ওয়েব স্ক্র্যাপিং ছিল, কারণ সার্ভার সাইড ফ্রেমওয়ার্কটি অন্য সাইট থেকে ওয়েব পৃষ্ঠাগুলি ডাউনলোড করতে পারে এবং আপনি এগুলি পরিচালনা করতে পারেন ঠিক যেমন আপনি ক্লায়েন্ট পক্ষ থেকে হবে। ম্যাসআপগুলি ভাবুন। ওয়েব পৃষ্ঠাকে কিছু গ্রাফিকাল প্রসঙ্গে "রেন্ডার" করতে না পারলে সেই ধরণের অনেক কিছুই ভেঙে যায়।

যাইহোক, এই ওয়েব কাঠামোটি মূলত এখন মৃত, সুতরাং এটির নাম-লজ্জা করার কোনও অর্থ নেই। কেবলমাত্র বিস্তৃত পাঠটিকে হৃদয়গ্রাহ্য করার জন্য সেরা: হ্যাঁ, আপনার কাছে নিখরচায় র‍্যাম রয়েছে এমন কি স্যুপ অদলবদল এখনও কার্যকর।


3

থেকে উবুন্টু সোয়াপ প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী মার্সেল লিঙ্ক যে

বেস ন্যূনতম হিসাবে, এটি সর্বাধিক প্রস্তাবিত যে স্বাপের স্থানটি শারীরিক মেমরির পরিমাণ (র‌্যাম) এর সমান হওয়া উচিত। এছাড়াও, হার্ড ডিস্কের পরিমাণের উপর নির্ভর করে অদলবদল শারীরিক মেমরির (র‌্যাম) দ্বিগুণ হওয়ার প্রস্তাব দেওয়া হয় twice

আমি মনে করি আপনার সিস্টেমে আপনার অদলবদল বাড়ানো উচিত। অদলবদলটি ইতিমধ্যে পেজযুক্ত ডেটা ফেলে দেওয়ার মাধ্যমে র‌্যাম মেমরির বরাদ্দকে গতি দেয়।


6
আমি এখনও এই অবিশ্বাস্য খুঁজে। আমার 4 জিবি, কখনই হাইবারনেটিং সিস্টেমের জন্য আমার 8 গিগাবাইট অদলবদ হওয়া উচিত? আমার 64 জিবি কম্পিউট নোডের জন্য আমার কি সত্যিই 128 গিগাবাইট স্বাপের প্রয়োজন? খুব সুনির্দিষ্ট কারণ না থাকলে আমি সাধারণত অদলবদলের জন্য 1GB এর বেশি বরাদ্দ করি না।
ডেভিড ম্যাকিনটোস

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

6
@ ডেভিড, @ জ্যাডার: অদলবদল = 2 * র‌্যাম ফিগারটি একটি পুরানো বুকের বাদাম যা মূল ন্যায্যতা অপ্রাসঙ্গিক হয়ে যাওয়ার পরে ভালভাবে বেঁচে গিয়েছিল - এখন লোকেরা তাদের সিস্টেমের জন্য উপযুক্ত ব্যক্তিত্বের পরিবর্তে এই চিত্রটিকে ন্যায়সঙ্গত করার উপায় খুঁজে বের করার চেষ্টা করছে । দেখুন কেন আমাদের শারীরিক স্মৃতির চেয়ে দ্বিগুণ বড় অদলবদল করার দরকার আছে?
গিলস

1
@ গিলস আমি আমার অবস্থানের সাথে লেগে আছি কারণ আমি একবার এই বিষয়ে একটি প্রামাণ্য কাগজ দেখেছি যা বিশেষজ্ঞদের একগুচ্ছ বিরোধী যে আমি জানি না যে তাদের জ্ঞান কত গভীর।
জাদ্দার ডায়াস

4
আপনি যদি রেফারেন্সটি মনে করতে পারেন তবে দয়া করে শেয়ার করুন।
গিলস

2

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

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