কীভাবে ক্যাশে বা অন্যথায় `du` সংক্ষিপ্তসারগুলিকে গতি বাড়ান?


33

আমাদের একটি বৃহত ফাইল সিস্টেম রয়েছে যার উপর একটি পূর্ণ du(ডিস্ক ব্যবহার) সারাংশ দুই মিনিটের বেশি সময় নেয়। আমি সেই ফাইল সিস্টেমে স্বেচ্ছাসেবক ডিরেক্টরিগুলির জন্য একটি ডিস্ক ব্যবহারের সারাংশ গতিময় করার একটি উপায় খুঁজে পেতে চাই।

ছোট শাখাগুলির জন্য আমি লক্ষ্য করেছি যে duফলাফলগুলি কোনওভাবে ক্যাশে হয়েছে বলে মনে হচ্ছে, পুনরাবৃত্তির অনুরোধগুলি আরও দ্রুত হয় তবে বড় শাখাগুলিতে গতি আপ্লুত হয় না।

duপূর্ববর্তী অনুসন্ধানের পরে পরিবর্তিত হয়নি এমন শাখাগুলির জন্য কি আরও দ্রুত আগ্রাসনমূলকভাবে ক্যাশিংয়ের ফলাফল রয়েছে?

অথবা এমন কোনও বিকল্প কমান্ড রয়েছে যা ডিস্ক ব্যবহারের সারসংক্ষেপগুলি দ্রুত সরবরাহ করতে পারে?


8
দুই মিনিট আমার কাছে এতটা দীর্ঘ মনে হয় না। তবে আসল প্রশ্নটি হ'ল: "আপনি কি সত্যিই ডু-কে কিছু ক্যাশে করতে চান?" ডু কি আপনাকে যথাযথ, বর্তমান হিসাবে সম্ভব, রিয়েল ডিস্ক ব্লক গণনা দেবে না?
ব্রুস এডিগার

আমি সম্মত হই যে প্রতিস্থাপনটি duখারাপ হবে, তবে অভিন্ন ইন্টারফেস সহ একটি দ্রুত র‍্যাপার স্ক্রিপ্টটি আমাদের পক্ষে খুব কার্যকর be আরও, আমি আশা করব যে শেষের পরিবর্তিত সময়ের উপর নির্ভর করে ক্যাচিংয়ের ফলাফলগুলি (এবং কোনও ডিস্ক-বিস্তৃত ক্রিয়াকলাপগুলি অনুমান করে, যেমন, ডিফ্র্যাগমেন্টেশন) সঠিক আকারের ফলাফল দেবে: আমি কি কিছু মিস করছি?
ইয়ান ম্যাকিননন

2
আপনি যদি খুব বেশি ডিস্ক ব্যবহার সম্পর্কে উদ্বিগ্ন হন তবে আপনি কোটা বাস্তবায়নের বিষয়ে বিবেচনা করতে পারেন।
পিয়াসি

2
ব্রুস - আপনি সম্পর্কে একই প্রশ্ন জিজ্ঞাসা করতে পারেন find। কিন্তু তারপর আছে locate
যুবাল

আপনি যদি অ্যান্ড্রয়েডে থাকেন তবে StatFsডিরেক্টরি আকারের একটি সুপার দ্রুত হিসাবের জন্য একবার দেখুন । এটি তুলনায় বড়, জটিল ডিরেক্টরিগুলির জন্য প্রায় 1000x দ্রুত ছিল du
জোশুয়া পিন্টার

উত্তর:


21

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

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

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


7

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

এটির জন্য আপনার ফাইল সিস্টেমটি প্রতি গ্রুপে কোটা সমর্থন করে। লিনাক্সের এক্সট [234] এবং সোলারিস / * বিএসডি / লিনাক্সের জেডএফএস করেন। আপনার ব্যবহারের ক্ষেত্রে এটি চমৎকার হবে যদি গ্রুপ কোটা এসিএলগুলিকে বিবেচনা করে নেয় তবে আমার মনে হয় না তারা তা করে।


7

সাধারণ ব্যবহারটি ব্যবহার করে duপ্রচুর পরিমাণে বাড়ানো যায় ncdu

ncdu - NCurses Disk Usage

সঞ্চালিত du, একটা চমৎকার কমান্ড লাইন GUI ফলাফল এবং তাদের শো, কিছুটা তুলনীয় ক্যাশে du -hc -d 1 | sort -h। প্রাথমিক সূচীকরণটি সমানভাবে সময় নেয় du, তবে মূল্যবান জায়গা পূরণ করে এমন প্রকৃত "অপরাধী" সন্ধান করা দ্রুত গতিতে হয়, কারণ সমস্ত উপ-ডিরেক্টরিতে প্রাথমিকভাবে ক্যাশেড ডু তথ্য উপলব্ধ থাকে।

প্রয়োজন হলে সাব-ডাইরেক্টরিগুলি [r] টিপে রিফ্রেশ করা যায় এবং ফাইলগুলি / ফোল্ডারগুলি [d] টিপে মুছে ফেলা যায়, উভয়ই সমস্ত প্যারেন্ট ডিরেক্টরিগুলির জন্য আপডেটের পরিসংখ্যান। বিলোপ নিশ্চিতকরণের জন্য জিজ্ঞাসা করে।

যদি Nececcary হয়, আরও গতিসম্পন্ন ncdu -1xo- / | gzip >export.gzএকটি ক্রোনজব মধ্যে প্রাকৃতকরণ এবং পরে এটি অ্যাক্সেস মাধ্যমে অর্জন করা যেতে পারে zcat export.gz | ncdu -f-, তবে স্পষ্টতই আরও পুরানো তথ্য দেয়।


7

আমি বয়স্ক ব্যবহার করতে পছন্দ করি

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

এটি মূলত ডিস্ক স্ক্যানের একই ধরণের কাজ করে duতবে এটি যা স্ক্যান করে তার সর্বশেষ-অ্যাক্সেসের সময়গুলিও রেকর্ড করে। তারপরে এটি এমন একটি সূচি তৈরি করে যা প্রতিটি সাবডিরেক্টরির জন্য ফলাফলগুলির সংক্ষিপ্তসার সরবরাহ করে দক্ষতার সাথে প্রতিবেদন তৈরি করতে দেয় এবং তারপরে এটি চাহিদা অনুযায়ী এই প্রতিবেদনগুলি তৈরি করে।


4
প্রশ্নের উত্তর দেয় না, তবে এখনও +1 করে। সুন্দর টিপ।
0xC0000022L

আমি এটিকে আরও পরিষ্কার করার জন্য প্রশ্নটি সম্পাদনা করেছি যে এটি আসলে প্রশ্নের উত্তর দেয় (বয়স্ক ইনডেক্স ডিস্ক ব্যবহারের পাশাপাশি অ্যাক্সেসের সময়)।
অ্যান্টনি জি - মনিকার পক্ষে

5

যেমন SHW দ্বারা উল্লিখিত, ageduপ্রকৃতপক্ষে একটি সূচক তৈরি। আমি ভেবেছিলাম পড়ার পরে আমি একটি সূচী তৈরির অন্য উপায়টি ভাগ করব locatedb। আউটপুট locatedbথেকে আপনি নিজের সংস্করণ তৈরি করতে পারেন du:

du | awk '{print $2,$1}' | /usr/lib/locate/frcode > du.locatedb

awkফাইলের প্রথমে ডু আউটপুটটিকে পুনরায় সাজায় যাতে frcodeডান কাজ করে। তারপরে locateডিস্ক ব্যবহারের দ্রুত রিপোর্ট করতে এই ডাটাবেসটি ব্যবহার করুন:

locate --database=du.locatedb pingus

আপনার প্রয়োজন অনুসারে আপনি এটি প্রসারিত করতে পারেন। আমি মনে করি এটি অবস্থিতটির একটি দুর্দান্ত ব্যবহার।


3
duc

( https://duc.zevv.nl দেখুন ) আপনি যা খুঁজছেন তা হতে পারে।

ডুক ডিস্কের ব্যবহারটিকে একটি অনুকূলিত ডাটাবেসে সঞ্চয় করে, যার ফলে দ্রুত ব্যবহারকারী ইন্টারফেস হয়। সূচক সম্পূর্ণ হওয়ার পরে অপেক্ষা করার সময় নেই।

সূচকটি আপডেট করা আমার পক্ষে খুব দ্রুত (121 কে ডিরেক্টরিতে প্রায় 950 কে ফাইলের জন্য 10 সেকেন্ডের কম, ২.৮ টিবি)। একটি জিইউআই এবং একটি এনসিওআরএস ইউআইও রয়েছে।

ব্যবহার যেমন:

duc index /usr
duc ui /usr

ওয়েবসাইট থেকে:

ডুকটি বিশাল ফাইল সিস্টেমে স্কেল করার জন্য নির্মিত: এটি কোনও সমস্যা ছাড়াই কয়েক মিলিয়ন ফাইলের স্টোরের পেটাবাইটে প্রদর্শন এবং প্রদর্শন করবে।


2

প্রতি 10 মিনিটে আপডেটবিড চালানোর জন্য আমার কাছে ক্রোনজব সেট আপ আছে। সমস্ত ফাইল সিস্টেম বাফারকে সুন্দর এবং তাজা রাখে। ভাল কোনও কিছুর জন্য সেই সস্তা র‌্যামটি ব্যবহার করতে পারে। 'আগে' এবং 'পরে' স্ল্যাবটপ ব্যবহার করুন।


আপনার উত্তর কীভাবে প্রশ্নের সাথে সম্পর্কিত তা আমি বুঝতে পারি না। updatedbডিস্ক ব্যবহার সম্পর্কে কিছুই বলে না। আপনি যদি কেবল ডিস্কটি অতিক্রম করার জন্য এটি করছেন তবে আপনি সামগ্রিক কর্মক্ষমতা ক্ষতি করতে যাচ্ছেন।
গিলস 21:54-তে

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

2

আপনি যদি কেবল ডিরেক্টরিটির আকার জানতে চান তবে আপনি কেবল স্ক্রিনে তথ্য না লিখে এটিকে অনেক গতিতে পারেন। যেহেতু গ্র্যান্ড টোটাল হ'ল duকমান্ডের শেষ লাইন , আপনি কেবল এটিতে পাইপ করতে পারেন tail

du -hc | tail -n 1

একটি 2 জিবি ডিরেক্টরি কাঠামো সম্পূর্ণ তালিকার জন্য এক সেকেন্ড সময় নেয় তবে এই ফর্মটির সাথে এর 5 তম চেয়ে কম।


2
আমি মনে করি du -hsযে এই উদ্দেশ্যে আরও সুবিধাজনক।
লিপ

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