Tôi cần làm điều đó để có thể dự đoán được nhiều hơn.Làm thế nào để dọn sạch bộ nhớ đệm I/O đĩa trên Linux
Trả lời
Có vẻ như bạn muốn lệnh sync hoặc chức năng sync().
Nếu bạn muốn disk cache đỏ bừng: echo 3 | sudo tee /proc/sys/vm/drop_caches
'sync' là 100% không liên quan. Tôi đang nói về bộ nhớ cache nhiều GB có thời lượng tồn tại lâu dài, không phải là số lượng dữ liệu không có thời gian tồn tại ngắn mà 'đồng bộ' giao dịch với (và được ghi vào đĩa cứ 10 giây một lần). – taw
Bạn đang nói về bộ đệm đĩa? Thử 'echo 3 | sudo tee/proc/sys/vm/drop_caches' –
Tôi chấp nhận bình luận của bạn, nhưng điều đó là không thể. – taw
Ngắt kết nối bộ và tái lắp đĩa dưới kiểm tra sẽ đặt lại tất cả bộ nhớ đệm và bộ đệm.
Không phải lúc nào. Ví dụ: 'mount/dev/sda1/mnt', bây giờ hãy xem phân vùng đó đang mở'/dev/sda' (hãy chú ý đến thiếu '1'), sau đó thay đổi một tập tin trong'/mnt'. Bạn có thể thấy rằng điều này không được phản ánh trong '/ dev/sda' vì nó sử dụng các cache khác nhau. 'umount/mnt' không hỗ trợ trong trường hợp đó, vì nó không ảnh hưởng đến'/dev/sda', thậm chí đó là ổ đĩa giống nhau. – Tino
Bạn có thể làm điều đó như thế này:
# 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
Bạn có thể sử dụng strace để thấy rằng đây là ba syscalls khác nhau
Ngoài ra, nó có thể được mong muốn để tắt HDD bộ nhớ cache bằng hdparm, không chắc chắn những gì bạn điểm chuẩn.
Trong bất kỳ cách nào, bạn không thể ngăn HDD lưu bộ nhớ cache 64/32/16 MB dữ liệu được sử dụng gần đây nhất. Để giết bộ nhớ đệm đó, chỉ cần viết một số số 0 (và tuôn ra) + đọc một số vị trí không liên quan từ HDD. Điều này là bắt buộc vì bộ nhớ cache có thể được chia thành phần đọc và phần ghi. Sau đó bạn có thể benchmark HDD.
+1 'blockdev' chính xác là những gì tôi đang tìm kiếm. – Tino
'blockdev --flushbufs/dev/sda' hoạt động với ổ USB của tôi, nhưng không có hiệu lực với ổ SSD SATA. 'echo 3 | sudo tee/proc/sys/vm/drop_caches' hoạt động với cả hai ổ đĩa. –
Lệnh cuối cùng sẽ loại bỏ đĩa khỏi hạt nhân. Bạn chắc chắn sẽ không thể chuẩn bị đĩa sau (hoặc sử dụng đĩa theo bất kỳ cách nào) và nếu đĩa đang được sử dụng thì sẽ rất nguy hiểm. Không có lý do gì để đưa nó cùng với các lệnh khác. Dưới đây là ví dụ về thời điểm sử dụng lệnh này và lệnh: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Online_Storage_Reconfiguration_Guide/removing_devices.html – ndemou
Disk cache tẩy: tài liệu echo 3 | sudo tee /proc/sys/vm/drop_caches
Command: https://www.kernel.org/doc/Documentation/sysctl/vm.txt
Viết để điều này sẽ gây ra hạt nhân để thả cache sạch, dentries và inodes từ bộ nhớ, gây nhớ rằng để trở thành miễn phí.
Để chủBộ nhớ đệm miễn phí:
echo 1 > /proc/sys/vm/drop_caches
Để dentries miễn phí và inodes:
echo 2 > /proc/sys/vm/drop_caches
Để miễn phí chủBộ nhớ đệm, dentries và inodes:
echo 3 > /proc/sys/vm/drop_caches
Vì đây là một hoạt động không phá hoại, và các đối tượng bẩn không thể giải phóng được, người dùng nên chạy "đồng bộ" trước để đảm bảo tất cả các đối tượng được lưu trữ đều được giải phóng.
ngắn tốt câu trả lời đủ: (copy dán thân thiện)
DISK=/dev/sdX # <===ADJUST THIS===
sync
echo 3 > /proc/sys/vm/drop_caches
blockdev --flushbufs $DISK
hdparm -F $DISK
Giải thích:
sync
: Từ trang người đàn ông: tuôn ra bộ đệm hệ thống tập tin. Lực lượng thay đổi khối vào đĩa, cập nhật khối siêu.
echo 3 > /proc/sys/vm/drop_cache
: from the kernel docsnày sẽ gây ra các hạt nhân để thả cache sạch
blockdev --flushbufs /dev/sda
: từ trang người đàn ông: IOCTLs gọi khối thiết bị [để] buffers tuôn ra.
hdparm -F /dev/sda
: từ trang người đàn ông: Xối ngay đệm ghi bộ nhớ cache trên ổ đĩa (ổ đĩa cũ có thể không thực hiện điều này)
Mặc dù blockdev và hdparm lệnh trông giống như theo an answer above họ phát hành IOCTLs khác nhau để thiết bị.
dài cách có lẽ tốt hơn:
(Tôi sẽ cho rằng bạn đã định dạng đĩa nhưng bạn có thể thích nghi với các lệnh này nếu bạn muốn viết trực tiếp vào đĩa)
Run này chỉ một lần trước khi chuẩn 1:
MOUNT=/mnt/test # <===ADJUST THIS===
dd if=/dev/urandom of=$MOUNT/temp-hddread.tmp bs=64M count=16
Run này mỗi khi bạn muốn để trống cache:
DISK=/dev/sdX # <===ADJUST THIS===
MOUNT=/mnt/test # <===AND THIS===
dd if=/dev/urandom of=$MOUNT/temp-hddwrite.tmp bs=64M count=16
rm $MOUNT/temp-hddwrite.tmp
sync
echo 3 > /proc/sys/vm/drop_caches
blockdev --flushbufs $DISK
hdparm -F $DISK
dd if=$MOUNT/temp-hddread.tmp of=/dev/null
Chạy ứng dụng này khi bạn hoàn tất.
MOUNT=/mnt/test # <===ADJUST THIS===
rm $MOUNT/temp-hddread.tmp
Giải thích:
Các HDD có thể có H/W cache đó sẽ không được xóa bởi các lệnh trên. Tôi đang viết và đọc dữ liệu giả ngẫu nhiên để lấp đầy chúng bằng rác. Có bao nhiêu dữ liệu phụ thuộc vào dung lượng bộ đệm HDD lớn. Tôi đang sử dụng/dev/urandom vì nó nhanh và chúng tôi không quan tâm đến số lượng đúng ngẫu nhiên. Tôi đang tạo /mnt/test/temp-hddread.tmp ngay từ đầu và sử dụng nó mỗi khi tôi muốn đọc đủ dữ liệu ngẫu nhiên. Tôi đang tạo và xóa /mnt/test/temp-hddwrite.tmp mỗi khi tôi muốn viết đủ dữ liệu ngẫu nhiên.
Tín
Tôi đã viết câu trả lời này dựa trên phần hay nhất của các câu trả lời đã có.
- 1. Dọn dẹp bộ nhớ đệm trên ổ đĩa - loại trừ MiniProfiler.RenderIncludes
- 2. Làm cách nào để xóa bộ nhớ đệm trên đĩa trong Windows?
- 3. Làm thế nào để dọn dẹp bộ nhớ cache được sử dụng bởi hạt nhân Linux
- 4. Làm thế nào để xóa bộ nhớ cache/bộ nhớ đệm in trên MacOSX
- 5. Bộ nhớ đệm DNS trong linux
- 6. Làm thế nào để tràn bộ đệm ổ cắm Linux?
- 7. Làm thế nào để giám sát bộ nhớ đệm UDP Linux có sẵn?
- 8. Làm cách nào để tắt bộ nhớ đệm trên Firefox?
- 9. Làm thế nào để xóa bộ nhớ đệm MKMapView?
- 10. Làm cách nào để hiển thị độ dài hàng đợi IO trên đĩa hiện tại trên Linux?
- 11. Làm thế nào để xóa bộ nhớ đệm Sprockets?
- 12. Làm thế nào để đệm bộ đệm trong bộ nhớ và ghi nó từ một chủ đề chuyên dụng
- 13. Làm thế nào để xử lý IO phức tạp và bộ nhớ cache ẩn trong Haskell?
- 14. Làm thế nào để làm mới #include file - họ có bộ nhớ đệm trên IIS7/ASP.NET
- 15. Làm cách nào để buộc Windows xóa tất cả dữ liệu bộ nhớ cache trên đĩa?
- 16. Làm thế nào để mmap một bộ đệm hạt nhân Linux để không gian người dùng?
- 17. Làm thế nào để theo dõi bộ nhớ trống (bao gồm bộ đệm và bộ đệm) trong java?
- 18. Làm cách nào để gỡ bỏ tệp khỏi bộ đệm hệ thống trên Linux?
- 19. Memcache có sử dụng bộ nhớ đĩa không?
- 20. Làm thế nào để xóa/xóa bộ nhớ cache đĩa Windows READ trong C#?
- 21. Tệp đĩa Linux AIO
- 22. Làm sạch bộ nhớ OpenGL GPU, yêu cầu?
- 23. Phân bổ bộ nhớ động dựa trên đĩa
- 24. Làm thế nào để nén một bộ đệm với zlib?
- 25. Làm cách nào để thay đổi hành vi bộ nhớ cache trên đĩa mặc định?
- 26. Dọn sạch một tập tin với php
- 27. Làm sạch bộ nhớ đệm bằng tiếng tămSau khi ghi đè sự nhầm lẫn
- 28. Làm thế nào để làm sạch sau SIGKILL?
- 29. Bộ nhớ cache, tắt bộ nhớ đệm
- 30. Bộ nhớ đệm xác thực Mercurial?
'sync' không hoạt động? – imm
'sync' đang xả, không bị xóa. – Tino