আরও লড়াকু ফাইল সিস্টেম ক্যাশে করার জন্য আমি কি আমার লিনাক্স সিস্টেমটি কনফিগার করতে পারি?


119

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

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

আমি এক্স ইউবুন্টু ১১.১০ x86 সহ ফাইল সিস্টেম এক্সট্রি এবং এনটিএফএস (আমি অনেকগুলি এনটিএফএস ব্যবহার করি!) ব্যবহার করি।


6
আপনার যদি প্রচুর র‍্যাম থাকে তবে পারফরম্যান্সের বিষয়ে অনেক যত্ন নিন এবং ডেটা হ্রাসের বিষয়ে চিন্তা করবেন না, কেবল আপনার সমস্ত ডেটা একটি র‌্যাম ডিস্কে অনুলিপি করুন এবং সেখান থেকে এটি পরিবেশন করুন, ক্র্যাশ / শাটডাউনের সমস্ত আপডেটগুলি বর্জন করে। যদি এটি আপনার পক্ষে কাজ করে না, আপনার র্যামের জন্য "যথেষ্ট" যোগ্যতা অর্জন করতে হবে বা ডেটাটি কতটা সমালোচনামূলক নয়।
জেমস ইয়ংম্যান

1
@ নীল, কম্পিউটারটি একটি ল্যাপটপ, সুতরাং, আমি বিশ্বাস করি, নিয়ামকটি খুব সাধারণ।
ইভান

1
কার্যকারিতা অনেক উন্নত করার একটি উপায় হ'ল ডেটার স্থায়িত্ব এড়ানো। কিছু অ্যাপস সিঙ্কের জন্য অনুরোধ করলেও কেবল ডিস্কে সিঙ্কিং অক্ষম করুন। এই ডেটা হারিয়ে কারণ হবে আপনার স্টোরেজ ডিভাইস কখনও বিদ্যুৎ হারানোর ভুগছেন পারেন। যাইহোক আপনি এটা করতে চান, কেবল চালানো sudo mount -o ro,nobarrier /path/to/mountpointবা সমন্বয় /etc/fstabঅন্তর্ভুক্ত করা nobarrierকোনো ফাইল সিস্টেম আপনি উন্নত কার্য সম্পাদনার জন্য বলি দিতে ইচ্ছুক জন্য অসাধারণ। তবে, যদি আপনার স্টোরেজ ডিভাইসে অভ্যন্তরীণ ব্যাটারি থাকে যেমন ইন্টেল 320 এসএসডি সিরিজ ব্যবহার nobarrierকরে কোনও ডেটা ক্ষতি হয় না।
মিক্কো রেন্টালাইনেন

1
লেখার বাধাগুলির নেতিবাচক কার্যকারিতা প্রভাব নগণ্য (প্রায় 3%) হওয়ায় রেড হ্যাট এন্টারপ্রাইজ লিনাক্স 6 এ নোবারিয়ার ব্যবহারের আর সুপারিশ করা হয় না। লেখার প্রতিবন্ধকতাগুলির সুবিধাগুলি এগুলি অক্ষম করার কার্যকারিতা সুবিধাগুলি ছাড়িয়ে যায়। অতিরিক্তভাবে, ভার্চুয়াল মেশিনে কনফিগার করা স্টোরেজে কখনই নোবারিয়ার বিকল্প ব্যবহার করা উচিত নয়। অ্যাক্সেস.ডাট
আইভাইলো বারদারভ

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

উত্তর:


106

সাধারণত ডিস্ক ক্যাশের কর্মক্ষমতা উন্নত করা কেবল ফাইল সিস্টেমের ক্যাশের আকার বাড়ানোর চেয়ে বেশি নয় যতক্ষণ না আপনার পুরো সিস্টেমটি র‍্যামের সাথে ফিট করে যে ক্ষেত্রে আপনার র‌্যাম ড্রাইভ ব্যবহার করা উচিত ( tmpfsভাল কারণ এটি যদি আপনাকে কোনও ক্ষেত্রে র‌্যামের প্রয়োজন হয় তবে ডিস্কে ফিরে যেতে দেয়) রানটাইম স্টোরেজ (এবং শুরুতে স্টোরেজ থেকে র‌্যাম ড্রাইভে সিস্টেম অনুলিপি করার জন্য একটি প্রাথমিক স্ক্রিপ্ট) for

আপনার স্টোরেজ ডিভাইসটি এসএসডি বা এইচডিডি কিনা তা আপনি জানাননি। আমার জন্য কাজ করার জন্য আমি যা পেয়েছি তা এখানে (আমার ক্ষেত্রে sdaএকটি এইচডিডি মাউন্ট করা /homeএবং sdbএসএসডি মাউন্ট করা আছে /)।

প্রথমে লোড-স্টাফ-থেকে-স্টোরেজ-থেকে-ক্যাশে অংশটি অনুকূলিত করুন:

এইচডিডির জন্য আমার সেটআপ এখানে রয়েছে (নিশ্চিত করুন যে আপনার টগলস থাকলে BIOS এএইচসিআই + এনসিকিউ সক্ষম হয়েছে):

echo cfq > /sys/block/sda/queue/scheduler
echo 10000 > /sys/block/sda/queue/iosched/fifo_expire_async
echo 250 > /sys/block/sda/queue/iosched/fifo_expire_sync
echo 80 > /sys/block/sda/queue/iosched/slice_async
echo 1 > /sys/block/sda/queue/iosched/low_latency
echo 6 > /sys/block/sda/queue/iosched/quantum
echo 5 > /sys/block/sda/queue/iosched/slice_async_rq
echo 3 > /sys/block/sda/queue/iosched/slice_idle
echo 100 > /sys/block/sda/queue/iosched/slice_sync
hdparm -q -M 254 /dev/sda

এইচডিডি কেসটির পক্ষে উল্লেখযোগ্য পরিমাণ উচ্চ fifo_expire_async(সাধারণত লিখুন) এবং slice_syncএকটি একক প্রক্রিয়া উচ্চতর আউটপুট পাওয়ার অনুমতি দেয় ( slice_syncআপনি যদি এমন পরিস্থিতিতে আঘাত করেন যেখানে একাধিক প্রক্রিয়া সমান্তরালে ডিস্ক থেকে কিছু ডেটার জন্য অপেক্ষা করছে) lower slice_idleসবসময় HDDs জন্য একটি আপস কিন্তু সীমার 3-20 কোথাও এটা সেটিং ডিস্ক ব্যবহার এবং ডিস্কে ফার্মওয়্যার উপর নির্ভর করে ঠিক আছে হওয়া উচিত। আমি কম মানগুলির জন্য টার্গেট করতে পছন্দ করি তবে এটি খুব কম সেট করা আপনার থ্রুপুটকে ধ্বংস করবে। quantumসেটিং থ্রুপুট অনেক প্রভাবিত কিন্তু সম্ভব এই কম রাখার যুক্তিসম্মত স্তরে লেটেন্সি রাখার চেষ্টা বলে মনে হয়। quantumখুব কম সেট করা থ্রুপুটকে ধ্বংস করবে। 3-8 পরিসরের মানগুলি এইচডিডি সহ ভাল কাজ করে বলে মনে হচ্ছে। একটি পড়ার জন্য সবচেয়ে খারাপ ক্ষেত্রে বিলম্ব হ'ল ( quantum* slice_sync) + ( slice_async_rq*slice_async) এমএস যদি আমি কার্নেলের আচরণটি সঠিকভাবে বুঝতে পারি তবে। অ্যাসিঙ্কটি বেশিরভাগ লেখক দ্বারা ব্যবহৃত হয় এবং যেহেতু আপনি ডিস্কে লেখার জন্য বিলম্ব করতে ইচ্ছুক, উভয় সেট করে slice_async_rqএবং slice_asyncখুব কম সংখ্যায়। তবে, slice_async_rqখুব কম মান নির্ধারণের ফলে স্টল পড়তে পারে কারণ লেখাগুলি আর বেশি কিছু পড়ার পরে আর দেরি করা যায় না। আমার কনফিগ 10 সেকেন্ড পরে সর্বাধিক ডিস্কে ডেটা লিখতে পরে ডেটা কার্নেলের সাথে প্রেরণ করা হয়েছে চেষ্টা করবে কিন্তু যেহেতু আপনি শক্তি ক্ষয় ডেটা সেট হারানোর সহ্য করতে পারে fifo_expire_asyncথেকে 3600000বলতে 1 ঘন্টা ডিস্কে বিলম্বের জন্য ঠিক আছে। তবে slice_asyncকম রাখুন, অন্যথায় আপনি উচ্চ পঠিত বিলম্ব পেতে পারেন।

hdparmকমান্ড কর্মক্ষমতা AHCI + + NCQ অনুমতি দেয় অনেক প্রাণনাশ থেকে এএএম প্রতিরোধ প্রয়োজন। যদি আপনার ডিস্কটি খুব বেশি শব্দ করে, তবে এড়িয়ে যান।

এসএসডি (ইন্টেল 320 সিরিজ) এর জন্য আমার সেটআপ এখানে রয়েছে:

echo cfq > /sys/block/sdb/queue/scheduler
echo 1 > /sys/block/sdb/queue/iosched/back_seek_penalty
echo 10000 > /sys/block/sdb/queue/iosched/fifo_expire_async
echo 20 > /sys/block/sdb/queue/iosched/fifo_expire_sync
echo 1 > /sys/block/sdb/queue/iosched/low_latency
echo 6 > /sys/block/sdb/queue/iosched/quantum
echo 2 > /sys/block/sdb/queue/iosched/slice_async
echo 10 > /sys/block/sdb/queue/iosched/slice_async_rq
echo 1 > /sys/block/sdb/queue/iosched/slice_idle
echo 20 > /sys/block/sdb/queue/iosched/slice_sync

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

এই টিউনবেলগুলি সম্পর্কে আরও তথ্যের জন্য http://www.linux-mag.com/id/7572/ দেখুন

বুদ্ধিমান পারফরম্যান্সের সাহায্যে আমরা যখন ডিস্ক থেকে ক্যাশে স্টাফ লোড করার জন্য কার্নেলটি কনফিগার করেছি, তখন সময়টি ক্যাশের আচরণটি সামঞ্জস্য করার:

আমি যে মানদণ্ডগুলি করেছি তা অনুসারে, আমি সামনের blockdevদিকে পড়াটি সেট করা মোটেই বিরক্ত করব না । কার্নেলের ডিফল্ট সেটিংস ঠিক আছে।

অ্যাপ্লিকেশন কোডের তুলনায় ফাইল ডেটা অদলবদল করতে পছন্দ করে নিন সিস্টেমটি সেট করুন (আপনার কাছে পুরো ফাইল সিস্টেম এবং সমস্ত অ্যাপ্লিকেশন কোড এবং র‌্যামে অ্যাপ্লিকেশন দ্বারা বরাদ্দকৃত সমস্ত ভার্চুয়াল মেমরি রাখার জন্য পর্যাপ্ত র্যাম থাকলে তা বিবেচনা করে না )। এটি একটি একক অ্যাপ্লিকেশন থেকে বড় ফাইলগুলি অ্যাক্সেসের জন্য বিলম্বের চেয়ে বিভিন্ন অ্যাপ্লিকেশনগুলির মধ্যে অদলবদলকে কমিয়ে দেয়:

echo 15 > /proc/sys/vm/swappiness

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

আপনার কাছে পর্যাপ্ত র‍্যাম থাকলে আমি আজকাল (2017) মোটামুটি কোনও অদলবদল করতে পছন্দ করি না। কোনও অদলবদল না হওয়া সাধারণত দীর্ঘ চলমান ডেস্কটপ মেশিনে 200-1000 এমবি র‍্যাম হারাবে। আমি খারাপ পরিস্থিতি দেরি করতে না পারাতে এতটা ত্যাগ করতে ইচ্ছুক (র্যামটি পূর্ণ হলে অ্যাপ্লিকেশন কোডটি অদলবদল করে)। অনুশীলনে, এর অর্থ এই যে আমি ওওম কিলারকে অদলবদল করতে পছন্দ করি। আপনি যদি অদলবদলের প্রয়োজন / প্রয়োজন /proc/sys/vm/watermark_scale_factorহয় তবে কিছুটা বিলম্বিতা এড়াতে আপনিও বাড়াতে চাইতে পারেন । আমি 100 এবং 500 এর মধ্যে মানগুলির পরামর্শ দেব You আপনি এই সেটিংটি লোয়ার অদলবদলের জন্য ট্রেডিং সিপিইউ ব্যবহার হিসাবে বিবেচনা করতে পারেন। ডিফল্ট 10 এবং সর্বাধিক সম্ভব 1000 হয় possible উচ্চতর মান ( কার্নেল ডকুমেন্টেশন অনুযায়ী ) kswapdপ্রক্রিয়াগুলির জন্য উচ্চ সিপিইউ ব্যবহারের ফলে এবং সামগ্রিকভাবে অদলবদল কম করতে পারে।

এরপরে, কিছু র‌্যাম মুক্ত করার প্রয়োজনে ফাইলের বিষয়বস্তুগুলির চেয়ে মেমরির মধ্যে ডিরেক্টরি রাইরিচি রাখার বিষয়ে কর্নেলকে বলুন (আবার, যদি সবকিছু র‍্যামের সাথে খাপ খায় তবে এই সেটিংটি কিছুই করে না):

echo 10 > /proc/sys/vm/vfs_cache_pressure

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

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

অবশেষে (ডিফল্ট RAM এর 50% পর্যন্ত ব্যবহার করতে বলে গেছেন ক্যাশ হিসাবে RAM এর 99% পর্যন্ত ব্যবহার এবং কার্নেল নির্দেশ নিচে প্রক্রিয়া যা লেখা হচ্ছে গতি কমে আগে কার্নেল বলতে dirty_background_ratioহয় 10)। সতর্কতা: আমি ব্যক্তিগতভাবে এটি করব না তবে আপনি পর্যাপ্ত র‌্যাম থাকার দাবি করেছেন এবং ডেটা হারাতে ইচ্ছুক।

echo 99 > /proc/sys/vm/dirty_ratio
echo 50 > /proc/sys/vm/dirty_background_ratio

এবং বলুন যে 1 ঘন্টা লেখার বিলম্ব ঠিক এমনকি ডিস্কে স্টাফ লেখা শুরু করা ঠিক (আবার, আমি এটি করব না):

echo 360000 > /proc/sys/vm/dirty_expire_centisecs
echo 360000 > /proc/sys/vm/dirty_writeback_centisecs

আপনি যদি এই /etc/rc.localসমস্তগুলি রেখে এবং শেষে অন্তর্ভুক্ত করেন তবে বুটের পরে যত তাড়াতাড়ি সম্ভব সমস্ত কিছু ক্যাশে হবে (কেবলমাত্র যদি আপনার ফাইল-সিস্টেমটি র‌্যামের সাথে ফিট করে তবেই এটি করুন):

(nice find / -type f -and -not -path '/sys/*' -and -not -path '/proc/*' -print0 2>/dev/null | nice ionice -c 3 wc -l --files0-from - > /dev/null)&

বা কিছুটা সহজ বিকল্প যা আরও ভাল কাজ করতে পারে (কেবলমাত্র ক্যাশে /homeএবং /usrকেবলমাত্র এটি করুন যদি আপনার /homeএবং /usrসত্যিকারের রামে ফিট থাকে):

(nice find /home /usr -type f -print0 | nice ionice -c 3 wc -l --files0-from - > /dev/null)&

3
গ্রহণযোগ্যটির চেয়ে একটি সু-জ্ঞাত এবং সামগ্রিক আরও ভাল উত্তর! এই একটিকে নিম্নরূপিত করা হয়েছে ... আমার ধারণা, বেশিরভাগ লোকেরা তাদের সত্যিকারের কী বোঝার জন্য বিরক্ত না করে কেবল সহজ নির্দেশনা চায় ...
ভ্লাদিমির পানতেলিভ

2
@ পিএইচপিদেবপ্যাড: এছাড়াও, প্রশ্নটি বলেছিল "আমি র‌্যাম ব্যবহারের বিষয়েও উদ্বিগ্ন নই [...]" - আমি মনে করি না যে কোনও মেমো ডিভাইস যোগ্যতা অর্জন করেছে।
মিক্কো রেন্টালাইনেন

1
এসএসডি-র জন্য নূপুর বা সময়সীমা আরও ভাল সময়সূচী নয়?
rep_movsd

1
@rep_movsd আমি কেবলমাত্র ইন্টেল এসএসডি ড্রাইভ ব্যবহার করছি তবে কমপক্ষে এই ড্রাইভগুলি এখনও সিএফকিউর মতো আরও বুদ্ধিমান শিডিয়ুলারের সাথে আরও ভাল সামগ্রিক পারফরম্যান্সের জন্য যথেষ্ট ধীর গতিতে রয়েছে। আমি অনুমান করতে পারি যে যদি আপনার এসএসডি ড্রাইভ 100K এরও বেশি এলোমেলো IOPS এর সাথে ডিল করতে পারে তবে নূপ বা সময়সীমা ব্যবহার করে দ্রুত সিপিইউ দিয়েও তা বোঝা যাবে। "দ্রুত সিপিইউ" দিয়ে আমি এমন কিছু বোঝাতে চাইছি যার মধ্যে কমপক্ষে একাধিক 3GHz কোর কেবল আইওর জন্য উপলব্ধ।
মিক্কো রেন্টালাইনেন

1
আপনি ভিএম কার্নেল ডক্স থেকে এই ভিএম সুরক্ষা সম্পর্কে পড়তে পারেন ।
জোয়েটউইডল

16

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

আপনি কি করতে পারেন কয়েকটি জিনিস আছে:

  • যেমন কিছু নতুন FS ব্যবহার ext4বাbtrfs
  • উদাহরণস্বরূপ, আপনার আইও সিডিউলার পরিবর্তন করার চেষ্টা করুন bfq
  • অদলবদল বন্ধ করুন
  • কিছু স্বয়ংক্রিয় প্রিলোডার ব্যবহার করুন er preload
  • systemdবুট করার সময় প্রিললোড করার মতো কিছু ব্যবহার করুন
  • ... এবং আরও কিছু

হতে পারে আপনি এটি ব্যবহার করে দেখতে চান :-)


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

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

1
এই অনুমানিত সমস্যাগুলি এনটিএফএসের কীসের সংক্ষিপ্তসারটি কার্যকর হত।
আন্ডারস্কোর_২

2
লিনাক্সে এনটিএফএস পারফরম্যান্স বাদে বেশ গ্রহণযোগ্য। প্রশ্নটি বিশেষত ফাইল সিস্টেমের কার্যকারিতা উন্নত করার বিষয়ে বিবেচনা করে, এনটিএফএসের প্রথম জিনিসটি হওয়া উচিত।
মিক্কো রেন্টালাইনেন

যদিও btrfsসম্প্রতি ফাইল সিস্টেম ডিজাইন করা হয়েছে, পারফরম্যান্সের প্রয়োজন হলে আমি এড়াতে চাই। আমরা অন্যথায় অভিন্ন সিস্টেমগুলি চালিয়ে যাচ্ছি btrfsএবং ext4ফাইল সিস্টেমগুলি এবং ext4একটি বড় ব্যবধানের সাথে রিয়েল ওয়ার্ল্ডে জিততে পারি ( একই পারফরম্যান্স স্তরের জন্য btrfsপ্রায় 4x সিপিইউ সময় ext4প্রয়োজন এবং একক লজিকাল কমান্ডের জন্য আরও ডিস্ক ক্রিয়াকলাপ ঘটায়)। কাজের চাপ উপর নির্ভর করে, আমি সুপারিশ করবে ext4, jfsবা xfsকোনো পারফরম্যান্স দাবিতে কাজের জন্য।
মিক্কো রেন্টালাইনেন

8

এগিয়ে পড়ুন:

32 বিট সিস্টেমে:

blockdev --setra 8388607 /dev/sda

Bit৪ বিট সিস্টেমে:

blockdev --setra 4294967295 /dev/sda

ক্যাশের পিছনে লিখুন:

echo 100 > /proc/sys/vm/dirty_ratio

এটি আপনার বিনামূল্যে মেমরির 100% পর্যন্ত রাইট ক্যাশে হিসাবে ব্যবহার করবে।

অথবা আপনি সমস্ত বাইরে গিয়ে tmpfs ব্যবহার করতে পারেন। আপনার কেবল পর্যাপ্ত র‌্যাম থাকলেই এটি প্রাসঙ্গিক। এটি ভিতরে রাখুন /etc/fstab। শারীরিক র‌্যামের পরিমাণের সাথে 100 জি প্রতিস্থাপন করুন।

tmpfs /mnt/tmpfs tmpfs size=100G,rw,nosuid,nodev 0 0

তারপর:

mkdir /mnt/tmpfs; mount -a

তারপরে / mnt / tmpfs ব্যবহার করুন।


5
3 জিবি বা 2 টিবি রিডহেড? সত্যি? আপনি কি জানেন যে এই বিকল্পগুলি কী করে?
কোবরা_ফাস্ট

1
@ কোবরা_ফাস্ট আপনি কি জানেন এর অর্থ কী? আমার আসলেই কোন ধারণা নেই এবং আমি এখন আগ্রহী।
syss

3
@ সাইড রিডহেড সেটিংস বাইট বা বিট নয়, মেমরির "ব্লক" সংখ্যা হিসাবে সংরক্ষণ করা হয়। কার্নেল সংকলনের সময়ে একটি ব্লকের আকার নির্ধারণ করা হয় (যেহেতু রিডহেড-ব্লকগুলি মেমরি ব্লক) বা কিছু ক্ষেত্রে ফাইল-সিস্টেমের সময়। সাধারণত যদিও, 1 ব্লকে 512 বা 4096 বাইট রয়েছে। Linux.die.net/man/8/ blockdev
কোবরা_ফাস্ট

6

আপনি রিড-ফরোয়ার্ড আকারটি সেট করতে পারেন blockdev --setra sectors /dev/sda1যেখানে সেক্টরগুলি 512 বাইট সেক্টরে আপনি যে আকারটি চান তা চাই।


2

আমার হত্যাকারী সেটিংস খুব সহজ এবং খুব কার্যকর:

echo "2000" > /proc/sys/vm/vfs_cache_pressure

কার্নেল ডকুমেন্টেশন থেকে ব্যাখ্যা :

vfs_cache_pressure

ডিরেক্টরি এবং ইনোড অবজেক্টের ক্যাচিংয়ের জন্য ব্যবহৃত মেমরিটিকে পুনরায় দাবি জানাতে কার্নেলের প্রবণতা নিয়ন্ত্রণ করে।

Vfs_cache_pressure = 100 এর ডিফল্ট মান অনুসারে কার্নেল পৃষ্ঠাগুলি এবং স্বাপচ্যাচ পুনর্বিবেচনা সম্পর্কিত একটি "ন্যায্য" হারে ডেন্টরি এবং আইনোডগুলি পুনরায় দাবি করার চেষ্টা করবে। Vfs_cache_pressure হ্রাস করার ফলে কার্নেলটি ডেন্ট্রি এবং ইনোড ক্যাশে ধরে রাখতে পছন্দ করে। যখন vfs_cache_pressure = 0 হয়, মেমরির চাপের কারণে কার্নেল কখনই ডেন্টরি এবং আইনডগুলি পুনরায় দাবি করতে পারে না এবং এটি সহজেই মেমরির বহির্মুখী অবস্থার কারণ হতে পারে। Vfs_cache_pressure 100 এর বাইরে বাড়ানোর ফলে কার্নেল ডেন্ট্রি এবং ইনোডগুলি পুনরায় দাবি করতে পছন্দ করে।

vfs_cache_pressure 2000 এ র্যামের মধ্যে বেশিরভাগ কম্পিউটিং ঘটে এবং খুব দেরীতে ডিস্ক লেখায়।


4
vfs_cache_pressureঅত্যধিক উচ্চ সেট করা (আমি 2000খুব উচ্চ বিবেচনা করব) এমনকি সরল স্টাফ যেমন ডিরেক্টরি তালিকা যা সহজেই ক্যাশে মাপসই করা উচিত for আপনার কতটা র‌্যাম রয়েছে এবং আপনি সিস্টেমটি দিয়ে কী করছেন? আমি আমার উত্তরে যেমন লিখেছি, এই সেটিংটির জন্য উচ্চ মানের ব্যবহার করা যেমন সীমিত র‌্যামের সাথে এইচডি ভিডিও সম্পাদনাটি বোঝায়।
মিক্কো রেন্টালাইনেন

2
উল্লেখ্য যে রেফারেন্সযুক্ত ডকুমেন্টেশনটি অব্যাহত রেখেছে: " ভিএফএস_ক্যাচি_প্রেসার উল্লেখযোগ্যভাবে 100 এর বাইরে বাড়ানো নেতিবাচক কর্মক্ষমতা প্রভাব ফেলতে পারে free ফ্রিযোগ্য ডিরেক্টরি এবং ইনোড অবজেক্টগুলি খুঁজতে পুনরায় দাবি কোডটি বিভিন্ন লক নেওয়া দরকার v আছে। "
মিক্কো রেন্টালাইনেন

1

ক্যাচিং লেখার সাথে সম্পর্কিত নয়, তবে লেখার সাথে সম্পর্কিত:

  • একটি ext4 সিস্টেমের জন্য, আপনি পুরোপুরি জার্নালিং অক্ষম করতে পারেন

    এটি কোনও নির্দিষ্ট আপডেটের জন্য ডিস্ক লেখার সংখ্যা হ্রাস করবে, তবে একটি অপ্রত্যাশিত শাটডাউন করার পরে ফাইল সিস্টেমটি একটি বেমানান রাষ্ট্র হতে পারে, যার জন্য fsck বা আরও খারাপ প্রয়োজন।

ডিস্ক থামাতে ডিগ্রি ট্রিগার থেকে পড়ে:

  • রিলেটাইম বা নোয়াটিম বিকল্পের সাথে মাউন্ট করুন

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

    relatimeঅ্যাসেসের সময়টি কম ঘন ঘন আপডেট করে, হিউরিস্টিক্স অনুসারে যা টাইম ব্যবহার করে এমন অ্যাপ্লিকেশনগুলিকে সহায়তা করতে সহায়তা করে। এটি Red Hat Enterprise Linux- এ ডিফল্ট on

অন্যান্য অপশন:

  • উপরের মন্তব্যে মিক্কো নোবারিয়ার বিকল্পের সাথে মাউন্ট হওয়ার সম্ভাবনাটি ভাগ করে নিয়েছে । তবে ইভাইলো রেডহ্যাটকে উদ্ধৃত করেছেন যারা এর বিরুদ্ধে সাবধানতা অবলম্বন করছেন। আপনি অতিরিক্ত 3% কত খারাপভাবে চান?
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.