Bằng cách nào đó tôi đã tình cờ trao đổi 14 GB bộ nhớ. Sau khi giết được thủ phạm, tôi lại có hàng tấn bộ nhớ trống, vì vậy tôi nghĩ rằng tôi có thể mang lại dữ liệu quan trọng một lần nữa. Vì vậy, với 5 GB trong số 32 GB được sử dụng và 14 GB dung lượng trao đổi được sử dụng, tôi đã chạy swapoff -a
.... và 4 giờ sau đó, khoảng một nửa công việc đã hoàn thành.
Điều này có nghĩa là ít hơn 1 MB / s, trong khi tôi có thể dễ dàng sao chép 200 MB / s. Trao đổi của tôi được mã hóa nhưng tất cả các phân vùng bình thường và với aes-ni, điều đó dẫn đến không có tải CPU đáng chú ý (và lấp đầy không gian trao đổi chỉ mất vài phút). Tôi thấy rằng không có lý do đặc biệt để tối ưu hóa swapoff
, tuy nhiên tôi tự hỏi làm thế nào nó có thể chậm như vậy?
Chỉ cần thêm một số dữ liệu: Bộ nhớ chính của tôi là 32 GB và tôi có dung lượng trao đổi 32 GB trên mỗi 4 ổ cứng (chắc chắn là quá mức cần thiết, nhưng ai quan tâm?). Toàn bộ không gian hoán đổi có thể được (giải mã và) đọc trong vòng chưa đầy 5 phút:
time -p sudo sh -c 'for i in /dev/mapper/cryptswap?; do md5sum $i & done; wait'
014a2b7ef300e11094134785e1d882af /dev/mapper/cryptswap1
a6d8ef09203c1d8d459109ff93b6627c /dev/mapper/cryptswap4
05aff81f8d276ddf07cf26619726a405 /dev/mapper/cryptswap3
e7f606449327b9a016e88d46049c0c9a /dev/mapper/cryptswap2
real 264.27
Đọc một phần của phân vùng không thể chậm hơn đọc tất cả. Tuy nhiên, đọc khoảng 1/10 của nó mất khoảng 100 lần lâu hơn.
Tôi quan sát thấy rằng trong swapoff
cả hai CPU hầu hết đều không hoạt động (có thể là 10% của một lõi) và các đĩa ("được đo" bằng đèn LED) cũng vậy. Tôi cũng thấy rằng các không gian hoán đổi đã bị tắt lần lượt.
iostat -d 5
hiển thị IO thấp trên các đĩa trong swapoff
quá?