"ডিডি" -র "বিএস" বিকল্পটি কি সত্যিই গতি উন্নত করে?


58

প্রতিবার এবং পরে, আমাকে বলা হয়েছে যে "ডিডি" এর গতি বাড়ানোর জন্য আমার সাবধানে একটি সঠিক "ব্লকের আকার" নির্বাচন করা উচিত।

এমনকি এখানে সার্ভারফল্টে অন্য কেউ লিখেছেন যে " ... সর্বোত্তম ব্লকের আকার হ'ল হার্ডওয়্যার নির্ভর ... " (আইইন) বা " ... সঠিক আকারটি আপনার সিস্টেম বাস, হার্ড ড্রাইভ নিয়ামক, নির্দিষ্ট ড্রাইভের উপর নির্ভর করবে নিজেই, এবং তাদের প্রত্যেকের জন্য ড্রাইভার ... " (ক্রিস- গুলি)

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

বাহ্যিক প্রভাব কমাতে, আমি পড়ার সিদ্ধান্ত নিয়েছি:

  • একটি বাহ্যিক এমএমসি কার্ড থেকে
  • একটি অভ্যন্তরীণ বিভাজন থেকে

এবং:

  • সম্পর্কিত ফাইল সিস্টেমের সাথে জমা দেওয়া ounted
  • "লেখার গতি" সম্পর্কিত সমস্যাগুলি এড়ানোর জন্য আউটপুটটি / dev / নালটিতে প্রেরণ করা;
  • এইচডিডি-ক্যাশিংয়ের কিছু প্রাথমিক সমস্যা এড়ানো, কমপক্ষে এইচডিডি জড়িত থাকার সময়।

নিম্নলিখিত সারণীতে, আমি আমার অনুসন্ধানগুলি জানিয়েছি, "বিএস" এর বিভিন্ন মান সহ 1 জিবি ডেটা পড়ে ( আপনি এই বার্তার শেষে কাঁচা সংখ্যাগুলি খুঁজে পেতে পারেন ):

এখানে চিত্র বর্ণনা লিখুন

মূলত এটি বেরিয়ে এসেছে যে:

  • এমএমসি: বিএস = 4 (হ্যাঁ! 4 বাইট) সহ, আমি 12 এমবি / এসের একটি আউটপুট পৌঁছেছি। সর্বাধিক 14.2 / 14.3 এ এতটা দূরবর্তী মানগুলির মূল্য নেই যা আমি বিএস = 5 এবং উপরের থেকে পেয়েছি;

  • এইচডিডি: একটি বিএস = 10 সহ আমি 30 এমবি / সেকেন্ডে পৌঁছেছি। 95.3 মেগাবাইটের চেয়ে কম অবশ্যই ডিফল্ট বিএস = 512 পেয়েছে তবে ... তাত্পর্যপূর্ণও রয়েছে।

এছাড়াও, এটি খুব স্পষ্ট ছিল যে সিপিইউ-এর সময়কাল বিএস মানের সাথে বিপরীতভাবে সমানুপাতিক ছিল (তবে এটি যুক্তিসঙ্গত বলে মনে হয়, কম বিএস হিসাবে, ডিডির মাধ্যমে সিস-কলগুলির সংখ্যা বেশি)।

উপরোক্ত সমস্ত কিছু বলার পরে, এখন প্রশ্ন: কেউ কি ব্যাখ্যা করতে পারবেন (কার্নেল হ্যাকার?) এই জাতীয় থ্রুপুটের সাথে জড়িত প্রধান উপাদানগুলি / সিস্টেমগুলি কী কী, এবং যদি ডিফল্টর চেয়ে বিএস উচ্চতর নির্দিষ্ট করার ক্ষেত্রে এটি সত্যিকারের প্রচেষ্টাটির মূল্য হয়?


এমএমসি কেস - কাঁচা সংখ্যা

BS = 1M

root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=1M count=1000
1000+0 record dentro
1000+0 record fuori
1048576000 byte (1,0 GB) copiati, 74,1239 s, 14,1 MB/s

real    1m14.126s
user    0m0.008s
sys     0m1.588s

BS = 1k

root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=1k count=1000000
1000000+0 record dentro
1000000+0 record fuori
1024000000 byte (1,0 GB) copiati, 72,7795 s, 14,1 MB/s

real    1m12.782s
user    0m0.244s
sys     0m2.092s

BS = 512

root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=512 count=2000000
2000000+0 record dentro
2000000+0 record fuori
1024000000 byte (1,0 GB) copiati, 72,867 s, 14,1 MB/s

real    1m12.869s
user    0m0.324s
sys     0m2.620s

BS = 10

root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=10 count=100000000
100000000+0 record dentro
100000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 70,1662 s, 14,3 MB/s

real    1m10.169s
user    0m6.272s
sys     0m28.712s

BS = 5

root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=5 count=200000000
200000000+0 record dentro
200000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 70,415 s, 14,2 MB/s

real    1m10.417s
user    0m11.604s
sys     0m55.984s

BS = 4

root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=4 count=250000000
250000000+0 record dentro
250000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 80,9114 s, 12,4 MB/s

real    1m20.914s
user    0m14.436s
sys     1m6.236s

BS = 2

root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=2 count=500000000
500000000+0 record dentro
500000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 161,974 s, 6,2 MB/s

real    2m41.976s
user    0m28.220s
sys     2m13.292s

BS = 1

root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=1 count=1000000000
1000000000+0 record dentro
1000000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 325,316 s, 3,1 MB/s

real    5m25.318s
user    0m56.212s
sys     4m28.176s

এইচডিডি কেস - কাঁচা সংখ্যা

BS = 1

root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=1 count=1000000000
1000000000+0 record dentro
1000000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 341,461 s, 2,9 MB/s

real    5m41.463s
user    0m56.000s
sys 4m44.340s

BS = 2

root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=2 count=500000000
500000000+0 record dentro
500000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 164,072 s, 6,1 MB/s

real    2m44.074s
user    0m28.584s
sys 2m14.628s

BS = 4

root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=4 count=250000000
250000000+0 record dentro
250000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 81,471 s, 12,3 MB/s

real    1m21.473s
user    0m14.824s
sys 1m6.416s

BS = 5

root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=5 count=200000000
200000000+0 record dentro
200000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 66,0327 s, 15,1 MB/s

real    1m6.035s
user    0m11.176s
sys 0m54.668s

BS = 10

root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=10 count=100000000
100000000+0 record dentro
100000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 33,4151 s, 29,9 MB/s

real    0m33.417s
user    0m5.692s
sys 0m27.624s

বিএস = 512 (ক্যাচিং এড়াতে পঠনটি অফসেট করা)

root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=512 count=2000000 skip=6000000
2000000+0 record dentro
2000000+0 record fuori
1024000000 byte (1,0 GB) copiati, 10,7437 s, 95,3 MB/s

real    0m10.746s
user    0m0.360s
sys 0m2.428s

বিএস = 1 কে (ক্যাচিং এড়াতে পঠনটি অফসেট করা)

root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=1k count=1000000 skip=6000000
1000000+0 record dentro
1000000+0 record fuori
1024000000 byte (1,0 GB) copiati, 10,6561 s, 96,1 MB/s

real    0m10.658s
user    0m0.164s
sys 0m1.772s

বিএস = 1 কে (ক্যাচিং এড়াতে পঠনটি অফসেট করা)

root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=1M count=1000 skip=7000
1000+0 record dentro
1000+0 record fuori
1048576000 byte (1,0 GB) copiati, 10,7391 s, 97,6 MB/s

real    0m10.792s
user    0m0.008s
sys 0m1.144s

11
সত্যিই কী দুর্দান্ত লাগবে তা হল একটি bs=autoবৈশিষ্ট্য ddযা ডিভাইস থেকে অনুকূল বিএস প্যারামিটার সনাক্ত এবং ব্যবহার করবে will

4
একমাত্র প্রশ্নের মধ্যে 15 ডজন কোড ব্লকের পরিবর্তে গতির বিপরীতে প্লট করা বিভিন্ন আকারের একটি গ্রাফটি কী অত্যন্ত সুন্দর হবে bs। কম জায়গা নেবে এবং পড়ার জন্য অসীম দ্রুত হবে। একটি ছবি সত্যিই হয় একটি thoursand শব্দ মূল্য।
MDMoore313

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

1
@ দামিয়ানোভেরজুলি টেবিলটি দুর্দান্ত, দয়া করে আমার অভিমানকে উপেক্ষা করুন, আমি আপনাকে যেভাবেই হোক আমাদের কুসংস্কার প্রমান করার জন্য একটি উত্সাহ দিয়েছিলাম এবং আমি জানি যে বাইট আকারের সাথে খাঁজ কাটা গতি পরিবর্তন করবে, আমি এটি একটি উত্তরও দিতে পারি।
MDMoore313

1
@ ওয়ারেন - 4 জি পাওয়ার জন্য আপনিও করতে পারেন bs=8k count=512Kবা bs=1M count=4Kআমি অতীতের
265536 এর

উত্তর:


24

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

আমি জানি যখন আমি হার্ড ডিস্কগুলি অনুলিপি করি তখন আমি ডিফল্ট bs=1Mব্যবহার bs=4kবা ডিফল্ট উল্লেখ করে একটি দ্রুত হার পাই । আমি 30 থেকে 300 শতাংশ গতির উন্নতি বলছি। আপনি প্রতিদিন এটি না করে নিখুঁত সেরা জন্য টিউন করার দরকার নেই। তবে ডিফল্টর চেয়ে ভাল কিছু বাছাই করা সময় কার্যকর করার সময়কে কেটে দিতে পারে।

আপনি যখন এটি বাস্তবের জন্য ব্যবহার করছেন তখন কয়েকটি ভিন্ন সংখ্যা চেষ্টা করুন এবং ddপ্রক্রিয়াটিকে SIGUSR1স্থিতি প্রতিবেদন দেওয়ার জন্য একটি সংকেত প্রেরণ করুন যাতে আপনি দেখতে পাচ্ছেন এটি কীভাবে চলছে।

✗ killall -SIGUSR1 dd
1811+1 records in
1811+1 records out
1899528192 bytes (1.9 GB, 1.8 GiB) copied, 468.633 s, 4.1 MB/s

2014 ম্যাকবুক প্রো রেটিনা ইউএসবি 3 স্টিকের অনুলিপি 90 এমবি / সেকেন্ড রেট রেট রেট: $ sudo dd if=~/Downloads/Qubes-R4.0-rc4-x86_64.iso of=/dev/rdisk2 status=progressশো 6140928 bytes (6.1 MB, 5.9 MiB) copied, 23 s, 267 kB/s। এটি অনেক বেশি সময় নিচ্ছে বলে আমি এটি বাতিল করে দিয়েছি। এখন বাইটসাইজ: $ sudo dd if=~/Downloads/Qubes-R4.0-rc4-x86_64.iso of=/dev/rdisk2 bs=1M status=progressশোগুলি উল্লেখ করছে4558159872 bytes (4.6 GB, 4.2 GiB) copied, 54 s, 84.4 MB/s
এরিক ডানকান

9

অভ্যন্তরীণ হার্ডডিস্কের সাথে অন্ততপক্ষে - আপনি যখন ডিভাইসটি থেকে পড়ছেন তখন ব্লক স্তরটি কমপক্ষে একটি সেক্টর পুনরুদ্ধার করতে হবে যা 512 বাইট is

সুতরাং, 1 বাইট রিড পরিচালনা করার সময় আপনি কেবলমাত্র সেক্টরে বিন্যাসিত বাইট পুনরুদ্ধার করার জন্য ডিস্ক থেকে পড়েছেন read বাকি 511 বার ক্যাশে পরিবেশন করা হয়।

আপনি নিম্নলিখিত হিসাবে এটি প্রমাণ করতে পারেন, এই উদাহরণে sdbআগ্রহের একটি ডিস্ক:

# grep sdb /proc/diskstats
8      16 sdb 767 713 11834 6968 13710 6808 12970792 6846477 0 76967 6853359
...
# dd if=/dev/sdb of=/dev/null bs=1 count=512
512+0 records in
512+0 records out
512 bytes (512 B) copied, 0.0371715 s, 13.8 kB/s
# grep sedb /proc/diskstats
8      16 sdb 768 713 11834 6968 13710 6808 12970792 6846477 0 76967 6853359
...

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

এই আকারের অনুরোধগুলিতে খেলতে যাওয়ার সবচেয়ে বড় কারণটি হল একটি পড়তে বা লেখার জন্য সিস্টেম কল দেওয়ার ওভারহেড। আসলে, <512 এর জন্য কল প্রদান করা অদক্ষ। খুব বড় পঠনগুলির জন্য আরও বেশি মেমরি ব্যবহার করার জন্য কম সিস্টেম কল প্রয়োজন।

4096 হ'ল পাঠের জন্য একটি 'নিরাপদ' নম্বর কারণ:

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