আমার কাছে একটি ডাইরে 1000000 4-20 কেবি ফাইল রয়েছে। আমার সেই দির কপি করা দরকার তবে মনে হচ্ছে প্রতিটি ফাইলের জন্য আমাকে সন্ধান করতে হবে তাই এটি বেশ খানিকটা সময় নেয়।
এমন কোনও উপায় আছে যেখানে আমি এই গতি বাড়িয়ে তুলতে পারি?
আমি বর্তমানে ভাবছি যে এই ফাইলগুলি যে ডিস্ক ব্লকগুলি ধারণ করে আমি যদি সেগুলি পেতে পারি তবে আমি সেগুলিকে বাছাই করতে পারি, যেগুলি ব্লকগুলি নিকটে ছিল তা সংহত করতে পারি (এই অনুক্রমিক পাঠটি প্রায়শই চাওয়ার চেয়ে দ্রুত হয়) এবং এই ব্লকগুলি পড়তে পারি, যাতে সেগুলি র্যামে ছিল কপিটি করার আগে ক্যাশে (আমার কাছে 32 জিবি র্যাম রয়েছে)।
তবে এটি কাজ করার জন্য আমার ফাইলগুলির মধ্যে কোনগুলি ব্লক রয়েছে তা সনাক্ত করার একটি উপায় প্রয়োজন।
আমি চৌম্বকীয় ডিভাইসে EXT4 ব্যবহার করছি (যেমন এসএসডি নয়)।
সম্পাদনা:
এটি কাজ করা উচিত কিন্তু এটি কাজ করে না:
ls |
parallel -IOO --pipe "sudo parallel -j100 hdparm --fibmap {}'|tail -n +5'" |
sort -nk 2 |
perl -ane 'if($u+10000 < $F[1]) { print "$l ",($u-$l),"\n"; $l=$F[1] } $u=$F[2]' |
sudo parallel --colsep ' ' dd if=/dev/sda1 skip={1} bs=512 count={2} '| cat >/dev/null'
এটি একটি বড় ফাইলে পরীক্ষা করার সময় এটি ফাইলটিকে ক্যাশে করে না।
Edit2:
এখানে কিছু মানদণ্ড দেওয়া হল। echo 3 >/proc/sys/vm/drop_caches
প্রতিটি রানের মধ্যে ক্যাশে ফ্লাশ করা হয়েছিল ( )। পরিমাপ দিয়ে সম্পন্ন iostats -dkx 5
।
rsync -Hav foo/ bar/: 1800 KB/s
cp -a foo/ bar/: 3600 KB/s
cat sort-by-inode | parallel -j1 -X cp foo/{} bar/: 5000 KB/s
cat sort-by-inode | shuf | parallel -j1 -X cp foo/{} bar/: 3000 KB/s
cat sort-by-inode | shuf | parallel -j10 -X cp foo/{} bar/: 7000 KB/s
cat sort-by-inode | parallel -j10 -X cp foo/{} bar/: 8000 KB/s
cat sort-by-inode | parallel -j100 -X cp foo/{} bar/: 9000 KB/s
cat sort-by-inode | parallel -j500 -X cp foo/{} bar/: 10000 KB/s
তাহলে আমরা এর থেকে কী শিখতে পারি?
মনে হচ্ছে আইনের মাধ্যমে বাছাই করা ভাল ধারণা। তবে এটি cp
আরও একাধিক উত্সাহের পারফরম্যান্সের সমান্তরাল বলে মনে হচ্ছে । এটি উত্সাহিত করার মতো যে উত্সটি foo/
একটি চৌম্বকীয় ডিস্ক, সুতরাং এটি এই পৌরাণিক কাহিনীটিকে আক্রমণ করে যে একক স্পিন্ডেলের সাথে I / O সমান্তরাল করে I / O গতি বাড়িয়ে তুলবে না: স্পষ্টত এবং ধারাবাহিকভাবে এখানে অনুলিপিটির গতি বাড়িয়ে তোলে।
cp -r /mnt/dir1 /mnt/dirdest
বা কিছু মত cp /mnt/dir1/* /mnt/dirdest
?