যেভাবে এটি ঘটে তার কারণ হ'ল প্রোগ্রামটি "এই ডেটা লিখুন" এবং লিনাক্স কার্নেল এটিকে মেমরি বাফারে অনুলিপি করে যা ডিস্কে যাওয়ার জন্য সারিবদ্ধ হয় এবং তারপরে "ঠিক আছে, হয়ে গেছে" বলে। সুতরাং প্রোগ্রামটি মনে করে যে এটি সবকিছু অনুলিপি করেছে। তারপরে প্রোগ্রামটি ফাইলটি বন্ধ করে দেয়, তবে হঠাৎ কার্নেল এটি অপেক্ষা করে তোলে যখন সেই বাফারটিকে ডিস্কে ফেলে দেওয়া হয়।
সুতরাং, দুর্ভাগ্যক্রমে প্রোগ্রামটি আপনাকে বলতে পারে না যে এটি বাফারটি ফ্লাশ করতে কতক্ষণ সময় নেবে কারণ এটি জানে না।
আপনি যদি কিছু পাওয়ার-ব্যবহারকারীর কৌশল চেষ্টা করতে চান তবে আপনি কার্নেল প্যারামিটারের vm.dirty_bytes
মতো 15000000
(15 এমবি) সেট করে লিনাক্স যে বাফারটি ব্যবহার করে তার আকার হ্রাস করতে পারে । এর অর্থ অ্যাপ্লিকেশনটি তার প্রকৃত অগ্রগতির চেয়ে 15MB এর বেশি পেতে পারে না। (আপনি ফ্লাইতে কার্নেল প্যারামিটারগুলি দিয়ে পরিবর্তন করতে পারেন sudo sysctl vm.dirty_bytes=15000000
তবে সেগুলি পুনরায় বুট করার জন্য এমন একটি কনফিগার ফাইল পরিবর্তন করা দরকার /etc/sysctl.conf
যা আপনার ডিস্ট্রোতে সুনির্দিষ্ট হতে পারে))
একটি পার্শ্ব প্রতিক্রিয়া হ'ল আপনার কম্পিউটারে এই সেটিংটির সাথে কম ডেটা-রাইটিং থ্রুপুট থাকতে পারে তবে সামগ্রিকভাবে, আমি এটি দেখতে সহায়ক মনে করি যে কোনও প্রোগ্রাম দীর্ঘ সময় চলমান রয়েছে যখন এটি প্রচুর পরিমাণে ডেটা লেখায় বনাম একটি বিভ্রান্তির সৃষ্টি করে confusion প্রোগ্রামটি তার কাজটি সম্পন্ন হয়েছে বলে মনে হয় তবে কার্নেলটি প্রকৃত কাজ করে বলে সিস্টেমটি খারাপভাবে পিছিয়ে আছে। dirty_bytes
আপনি যখন ফ্রি মেমরি কম রাখেন এবং হঠাৎ প্রচুর ডেটা লেখেন এমন একটি প্রোগ্রাম চালান তখন যুক্তিসঙ্গতভাবে ছোট মান নির্ধারণ করা আপনার সিস্টেমটিকে প্রতিক্রিয়াহীন হয়ে উঠতে বাধা দিতে সহায়তা করে।
তবে, এটি খুব ছোট সেট করবেন না! আমি 15MB মোটামুটি অনুমান হিসাবে ব্যবহার করি যে কর্নেল বাফারটিকে একটি হার্ড হার্ড ড্রাইভে একটি সেকেন্ড বা তার কম 1/4 অংশে ফ্লাশ করতে পারে। এটি আমার সিস্টেমটিকে "অলস" বোধ থেকে বিরত রাখে।