স্বল্প -কালীন ফাইলগুলি কি ডিস্কে ফ্লাশ করা হয়?


9

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

যেহেতু ফাইল ছোট, এর অনুমান করা তাদের আকারের যোগফল চেয়ে ছোট দিন dirty_bytesএবং dirty_background_bytes

Ext4 এ ডিফল্ট জার্নাল চালু হয়েছে, অর্থাৎ মেটাডেটা জার্নাল। আমি আরও জানতে চাই মেটাডেটা বা ডেটা ডিস্কে লেখা আছে কিনা।


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

ক্ষুদ্র ফাইলগুলির জন্য
রিসারএফস আরও

কিছু স্পষ্টতা: (1)। ext4 ফাইল সিস্টেম syncঅপশন সহ মাউন্ট করা হয় না । আপনি একটি ডিফল্ট ইনস্টল করা ফেডোরা, ডিবিয়ান বা উবুন্টু বিবেচনা করতে পারেন। আপনি একটি বাছাই। (2)। প্রতিটি ফাইল প্রায় 60KB। (3)। প্রতি সেকেন্ডে প্রায় 1000 টি ফাইল তৈরি এবং মুছে ফেলা হয়, তবে 10 টিরও বেশি ফাইল কোনও সময় উপস্থিত নেই। অন্য কথায়, আই / ও থ্রুপুট বড় তবে দখল করা স্থানটি ছোট।
উ ইওংঝেং

উত্তর:


5

এক্সট 4 ব্যবহার করে একটি সাধারণ পরীক্ষা:

একটি 100MB চিত্র তৈরি করুন ...

# dd if=/dev/zero of=image bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.0533049 s, 2.0 GB/s

এটিকে একটি লুপ ডিভাইস করুন ...

# losetup -f --show image
/dev/loop0

ফাইল সিস্টেম এবং মাউন্ট করুন ...

# mkfs.ext4 /dev/loop0
# mount /dev/loop0 /mnt/tmp

স্বল্পজীবী ফাইল দিয়ে এক ধরণের রান করুন। (আপনার পছন্দের যে কোনও পদ্ধতিতে এটি পরিবর্তন করুন))

for ((x=0; x<1000; x++))
do
    (echo short-lived-content-$x > /mnt/tmp/short-lived-file-$x
     sleep 1
     rm /mnt/tmp/short-lived-file-$x ) &
done

পরিমাণ, সিঙ্ক, আনলুপ।

# umount /mnt/tmp
# sync
# losetup -d /dev/loop0

চিত্রের বিষয়বস্তু পরীক্ষা করুন।

# strings image | grep short-lived-file | tail -n 3
short-lived-file-266
short-lived-file-895
short-lived-file-909
# strings image | grep short-lived-content | tail -n 3

আমার ক্ষেত্রে এটি সমস্ত ফাইলের নাম তালিকাভুক্ত করেছে তবে ফাইলের সামগ্রীগুলির মধ্যে একটিও নেই। সুতরাং শুধুমাত্র বিষয়বস্তু লেখা হয়নি।


ভাল চেষ্টা. এখন আমি নিশ্চিত। আমিও এক্স 2 চেষ্টা করেছিলাম এবং আপনার মতো ফলাফল পেয়েছি। আমি আপনার সমান্তরাল আই / ও কাজের চাপকে একটি অনুক্রমিকভাবে পরিবর্তন করেছি এবং একটি স্বল্প-জীবন-ফাইল -99 এবং একটি 8 স্বল্প-সময়-সামগ্রী- * পেয়েছি। কারও কি কোন ব্যাখ্যা আছে?
উ ইউংঝেং

@ এমএসডাব্লু: অস্পষ্ট হলে সম্পাদিত। অন্যথায় দয়া করে বিস্তারিত বলুন।
frostschutz

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

7

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

আপনি যদি সত্যিই ডিস্কের লেখাগুলি এড়াতে চান তবে tmpfs দেখুন ,


2
tmpfs আসলে এই ক্ষেত্রে একটি ভাল ফিট, কিন্তু আমি এখনও জানতে চাই, একটি সাধারণ অপারেটিং সিস্টেমের প্রশ্ন হিসাবে, ডেটা কি ডিস্কে লেখা হয় (অকারণে)?
উ ইয়ংঝেং

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

ঠিক আছে, যদি পিডিএফ্লুশ আসে ফাইল মুছে ফেলার পরে । এটি লেখা অযথা হবে।
উ ইউংঝেং

1

একটি সাধারণ নিয়ম হিসাবে, না, সেগুলি লেখা হবে না। কারণ দুটি শর্তের মধ্যে একটি পূরণ হলে ক্যাশে নোংরা পৃষ্ঠাগুলি ফ্লাশ করে:

  1. ডেটা পরে /proc/sys/vm/dirty_writeback_centisecsপুরানো হয়, যা 5 সেকেন্ডের ডিফল্ট হয়।

  2. ক্যাশে ডেটা ধরে রাখতে খুব কম স্মৃতি রয়েছে, ক্যাশে dirty_ratioনোংরা পৃষ্ঠাগুলির চেয়ে বেশি (ডিফল্ট ২০%) to

সুতরাং প্রচুর পরিমাণে ফ্রি মেমরি এবং সামান্য লেখার ট্র্যাফিক আপনার ছোট ফাইলগুলি যে 5 সেকেন্ডেরও কম সময়ে মুছে ফেলা হয় সেগুলি বাদ দিয়ে ডেটা ফ্লাশ করা হবে না।


0

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

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

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

কিছু তত্ত্ব

সাধারণভাবে, ফাইল সিস্টেম অ্যাক্সেস করার একটি সিস্টেম কল শেষ হয়ে যায়, পরিবর্তে দ্রুত, ফাইল সিস্টেম ড্রাইভারের সংজ্ঞায়িত পদ্ধতিতে ("স্ট্রাক্ট ইনোড_অপেশেশনগুলি" এবং "স্ট্রাক্ট ফাইল_অপারেশন" সংযুক্ত থাকে যখন ভিএফএস ড্রাইভার নিবন্ধিত থাকে)। এর পরে যা ঘটে তা কেবল ফাইল সিস্টেমের প্রয়োগের বিবেচনার জন্য ছেড়ে যায়। সাধারণত, নিম্নলিখিত পদ্ধতির অনুরূপ কিছু ব্যবহার করা হয় (এটির সাধারণ উদাহরণ লিনাক্স FAT ড্রাইভারের কাছ থেকে):

if (IS_DIRSYNC(dir))
    (void)fat_sync_inode(dir);
else
    mark_inode_dirty(dir);

যদি ফাইল সিস্টেমটি "সিঙ্ক" মোডে মাউন্ট করা থাকে, সমস্ত পরিবর্তনগুলি তত্ক্ষণাত ডিস্কে চলে যায় (এই ক্ষেত্রে ফ্যাট_সিসিন_ইনোডের মাধ্যমে)। অন্যথায়, ব্লকটিকে "নোংরা" হিসাবে চিহ্নিত করা হয়েছে এবং কিছু যুক্তিসঙ্গত সুযোগ না পাওয়া পর্যন্ত মেমরি ক্যাশে থাকবেন।

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


আপনার উত্তরের জন্য ধন্যবাদ. দেখে মনে হচ্ছে ext4 বরাদ্দেও বিলম্ব করেছে। তার মানে কি আমার উত্তরটি নেই? (অন্য কোথাও কোনও মজার কনফিগারেশন বিকল্প নেই)। এর অর্থও কি আমার উত্তর হ্যাঁ হ'ল যদি ext2 ব্যবহার করা হয়?
উ ইয়ংজেং

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

আমার এক্সট 4 স্পষ্টতই syncবিকল্পের সাথে মাউন্ট করা হয়নি । আমি কখনই ওই কাজ করতাম না.
উ ইওংঝেং

একটি ইনোড নোংরা চিহ্নিত করার সময়, আমি ধরে নিই যে ফাইল সিস্টেমটি সংশ্লিষ্ট পৃষ্ঠাটি নোংরা চিহ্নিত করার জন্য দায়বদ্ধ। পরে যখন ইনোড মোছা হয়, ফাইল সিস্টেমটি কি নোংরা পৃষ্ঠাটি পরিষ্কার করে? যদি তা না হয় তবে ডেটা অযথা ডিস্কে ফ্লাশ করা হবে।
উ ইউংঝেং

2
অব্যবহৃত ডেটা ব্লকগুলি "প্রকাশিত" হয়, সুতরাং এগুলি নোংরা হওয়া বন্ধ করে দেয়। যদি আপনি ফাইল করার জন্য কিছু স্টাফ লিখে থাকেন এবং তারপরে এটি ফ্লাশের আগে ছাঁটা হয়ে থাকে তবে ইওএফের অতীত জাঙ্কটি কেবল অদৃশ্য হয়ে যায় (সাজানো)। মেটাডেটা সহ এটি এত সহজ নাও হতে পারে কারণ ফাইল সিস্টেমের ডেটা স্ট্রাকচারের অখণ্ডতা সম্পর্কিত বিভিন্ন ট্রেড অফ থাকতে পারে। যাইহোক, আপনার প্রশ্ন থেকে এটা স্পষ্ট নয় যে আপনি সর্বদা আপনার প্ল্যাটফর্মের সম্পূর্ণ নিয়ন্ত্রণে থাকবেন বলে আশা করেন - বেশিরভাগ অ্যাপ্লিকেশন সাধারণত বিকাশকারী থেকে দূরে অজানা কনফিগারেশনের মেশিনগুলিতে চলতে থাকে।
ওকাদ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.