ما هو خوارزمية Unix DU التي تستخدمها لحساب مساحة القرص؟
سؤال
لقد حاولت استخدام du
لحساب استخدام القرص اليوم على دليل واحد. حجم الدليل هو 6 جيجابايت واستغرق الأمر الوقت التالي للحساب:
prompt> time du -sh .
6.0G .
real 1m32.405s
user 0m2.053s
sys 0m16.552s
ما هو خوارزمية Unix DU التي تستخدمها لحساب مساحة القرص؟ لماذا هو بطيء جدا؟ هل هناك أي بدائل لحساب مساحة القرص بشكل أكثر كفاءة؟ منصة الاحتجاج Sun
. يتم تثبيت الدليل الذي تم حساب الحجم من أجله NFS.
المحلول
أعتقد أنه يسير على الدليل بشكل متكرر ، مع إضافة أحجام الملفات الموجودة معًا. بسيطة جدا ، حقا ، ولكن بالطبع يستغرق بعض الوقت. قد يكون الأمر أسرع إذا جعل نظام الملفات هذه العمليات أسرع.
نصائح أخرى
يتعين على DU إدراج جميع الدلائل وإحصائيات كل ملف يتم العثور عليه بحيث ينتهي به المطاف القراءة في جميع أنحاء القرص
أثناء الحصول على أحجام الملفات ، يلخصها وعند الانتهاء ، يطبع المبلغ
على سبيل المثال على هذا الدليل واحد مع 2 مليون ملف على نظام ملفات SSHFS:
prompt$ time du -sh .
367G .
real 12m53.093s
user 0m3.848s
sys 0m14.265s
ولكن بسبب التخزين المؤقت للتشغيل الثاني ، يستغرق الأمر فقط:
prompt$ time du -sh .
367G .
real 4m56.875s
user 0m4.136s
sys 0m15.257s
سرعتها تعتمد على عدد الملفات/الدلائل. إذا كان لديك دليل يحتوي على ملفات 6 جيجابايت ، فسوف يستغرق حسابه أقل بكثير. يحسب حجم الملفات في الدليل المحدد ، ومتكرر لكل دليل طفل.