Daha öngörülebilir kıyaslama için bunu yapmalıyım.Linux üzerinde disk G/Ç önbelleklerini temizleme
cevap
sync komutunu veya sync() işlevini istediğiniz gibi çıkarır.
disk önbellek flushing'e isterseniz: echo 3 | sudo tee /proc/sys/vm/drop_caches
'sync',% 100 ilişkisizdir. Uzun ömürlü çoklu-GB okuma önbelleklerinden bahsediyorum, kısa süreli yazılmamış veri miktarları değil, “sync” ile ilgileniyor (ve her 10 ya da daha fazla saniyede diske yazılıyor). – taw
Disk önbelleklerinden mi bahsediyorsunuz? Echo 3'ü dene | sudo tee/proc/sys/vm/drop_caches' –
Yorumunuzu kabul ediyorum, ancak bu mümkün değil. – taw
unmounting ve test altındaki diskin tüm önbelleklerini ve tampon sıfırlayacak yeniden montaj.
Her zaman değil. Örnek: 'mount/dev/sda1/mnt', şimdi'/dev/sda' açılış bölümüne bakın (lütfen '1' eksikini fark edin), sonra '/ mnt' altındaki bir dosyayı değiştirin. Bunun farklı önbellekler kullandığı için bunun '/ dev/sda'ya yansımadığını görebilirsiniz. Bu durumda, umount/mnt', '/ dev/sda' etkilemediği için fiziksel olarak aynı sürücü olsa bile yardımcı olmaz. – Tino
Böyle yapabilirsiniz:
# synC# (move data, modified through FS -> HDD cache) + flush HDD cache
# echo 3 > /proc/sys/vm/drop_caches # (slab + pagecache) -> HDD (https://www.kernel.org/doc/Documentation/sysctl/vm.txt)
# blockdev --flushbufs /dev/sda
# hdparm -F /dev/sda
# NEXT COMMAND IS NOT FOR BENCHMARKING:
# should be run before unplug, flushes everything possible guaranteed.
# echo 1 > /sys/block/sdX/device/delete
Bunu emin, hdparm kullanarak HDD önbelleği kapatmak için arzu olmayabilir, bu üç farklı sistem çağrıları da
olduğunu görmek için strace kullanabilir
Hangi şeyi kıyaslıyorsun?
Herhangi bir şekilde, HDD'nin son kullanılan veriyi son 64/32/16 MB önbelleğe almasını engelleyemezsiniz. Bu önbelleği öldürmek için, sadece bir miktar sıfır (ve sifon) yazın + HDD'den ilgisiz bir yer okuyun. Önbellek, okuma-parça ve yazma bölümüne bölünebileceğinden, bu gereklidir. Bundan sonra HDD'yi kıyaslayabilirsiniz.
+1 'blockdev' tam olarak aradığım şeydi. – Tino
'blockdev --flushbufs/dev/sda' USB sürücüm ile çalışır, ancak SATA SSD sürücüsüyle hiçbir etkisi yoktur. 'echo 3 | sudo tee/proc/sys/vm/drop_caches' her iki sürücüyle çalışır. –
Son komut, diski çekirdekten kaldırır. Diski (veya diski herhangi bir şekilde kullanın) sonra kesinlikle karşılaştırmak mümkün olmayacaktır ve disk kullanımda ise tehlikeli. Diğer komutlarla birlikte eklemenin bir nedeni yok. İşte bu komutu ne zaman kullanacağınız ve neler yaptığını gösteren bir örnek: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Online_Storage_Reconfiguration_Guide/removing_devices.html – ndemou
Disk önbelleği temizleme: echo 3 | sudo tee /proc/sys/vm/drop_caches
Komut belgeleri: https://www.kernel.org/doc/Documentation/sysctl/vm.txt
bu yazma çekirdek özgür olmak o hafızayı neden bellekten temiz önbelleğe, dentries ve inode'lara bırakmasına neden olur. ücretsiz pagecache için
:
: ücretsiz pagecache, dentries ve düğüm için
echo 3 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
: ücretsiz dentries ve düğüm için
echo 1 > /proc/sys/vm/drop_caches
Bu, tahribatsız bir işlem olduğundan ve kirli nesneler serbest olmadığından, tüm önbelleğe alınmış nesnelerin serbest bırakıldığından emin olmak için kullanıcı önce "eşitleme" çalıştırmalıdır.
Kısa yeterince iyi cevap: (kopya dostu yapıştırın)
DISK=/dev/sdX # <===ADJUST THIS===
sync
echo 3 > /proc/sys/vm/drop_caches
blockdev --flushbufs $DISK
hdparm -F $DISK
Açıklama:
sync
: floş dosya sistemi tamponları: man sayfasından. Değiştirilen blokları diske zorla, süper bloğu güncelle.
echo 3 > /proc/sys/vm/drop_cache
: floş tampon [to] çağrı blok aygıtı IOCTL'ler: man sayfasından: from the kernel docsbu çekirdek temiz önbelleklerini
blockdev --flushbufs /dev/sda
bırakmasına neden olur.
hdparm -F /dev/sda
: man sayfasından: on-sürücüye yazma önbelleği tamponunu boşaltır blockdev ve hdparm komutları onlar için farklı IOCTL'ler sorunu an answer above göre benzer
rağmen (eski sürücüler bu uygulayamaz) cihaz.
Uzun muhtemelen daha iyi yol:
(Sana diski biçimlendirilmiş olduğunu varsayıyoruz ama diske doğrudan yazmak isterseniz bu komutları adapte edebilir) bu sadece bir defa
Çalıştır 1 kriter önce:
:MOUNT=/mnt/test # <===ADJUST THIS===
dd if=/dev/urandom of=$MOUNT/temp-hddread.tmp bs=64M count=16
Run her kayıt önbelleklerini boşaltmak istiyorum
İşiniz bittiğinde bunu çalıştırın.
MOUNT=/mnt/test # <===ADJUST THIS===
rm $MOUNT/temp-hddread.tmp
Açıklama: HDD Yukarıdaki komutlar tarafından temizlenmez H/W önbellekleri olabilir
. Onları çöple doldurmak için sahte rastgele veriler yazmayı ve okuyorum. Ne kadar veri HDD önbelleğinin büyüklüğüne bağlı olarak değişir./Dev/urandom kullanıyorum çünkü hızlı ve true rasgeleliğini önemsemiyoruz. Başlangıçtan /mnt/test/temp-hddread.tmp oluşturuyorum ve her zaman yeterince rastgele veri okumak istediğimde kullanıyorum. Her seferinde yeterince rastgele veri yazmak istediğim zaman /mnt/test/temp-hddwrite.tmp dosyası oluşturup siliyorum.
Kredi
Ben mevcut cevapların en canlı parçalarına dayanan bu cevabı yazdım.
- 1. Linux Sunucusunda Disk Alanı
- 2. Windows CLI disk belleği yazma önbelleğini temizleme
- 3. SSD disk üzerinde bir blok TRIM nasıl?
- 4. centos boş alan disk üzerinde güncellenmiyor
- 5. Linux: Stat çalışması için Sabit Disk Statüsü
- 6. Gç zamanının karmaşıklığı()
- 7. LINUX üzerinde XML oku
- 8. Gömülü Linux üzerinde hafif hata ayıklama Linux
- 9. Google Cloud üzerinde mevcut disk boyutunu güncelleme
- 10. Temizleme
- 11. Assembler kodu Linux üzerinde çalışmıyor
- 12. Linux üzerinde birbirine eşdeğer eşdeğer
- 13. Linux üzerinde Python IDLE çağırma
- 14. Yürütülebilen ram c üzerinde linux
- 15. linux üzerinde magic.mime öğesini genişletme
- 16. Tensor 32-bit Linux üzerinde?
- 17. Temizleme eylemi hatasını kaygan dbio eylemleriyle temizleme
- 18. Safari 9.1 iframes önbelleklerini güncelliyor iframe'ler
- 19. Linux'taki disk IO kuyruk uzunluğunu nasıl görüntülerim?
- 20. Windows İletileri Temizleme İletisi
- 21. Commodore 64 üzerinde derlemeyi kullanarak bir disk dosyası yazmak
- 22. Nasıl iPhone os üzerinde disk doğrudan dosyaları indirmek için?
- 23. Metin kutusu değerlerini onclick onclick ve onclur üzerinde temizleme
- 24. linux taşıma hatası 202 üzerinde jdb yürütün: Ben linux üzerinde jdb yürütmek zaman bağlamak
- 25. Windows üzerinde çalışmak için Linux üzerinde C# + WPF Derleme
- 26. Visual Studio 2008 Üretkenlik Gç Araçları
- 27. Visual Studio Üretkenlik Gç Araçları yapılandırma ayarları
- 28. Nasil zaman aşımı Raylar önbelleklerini önler?
- 29. . Net Üretkenlik Gç Araçları (PPT) nasıl kaldırılır?
- 30. Gç dizesi kümesi (girdi olarak) C#
'sync' bunu yapmıyor mu? – imm
'sync', temizleme değil, kızarma. – Tino