Tôi đang sử dụng Debian sid, ổ cứng được định dạng bằng ext4, chạy trên linux 3.1
Tôi nhớ trên các phiên bản linux trước đây (có thể trước 3.0), nếu tôi hết bộ nhớ và trao đổi không được bật, các chương trình thường sẽ bị sập. Điều này là hoàn hảo cho môi trường của tôi: duyệt web đơn giản không có hoạt động quan trọng. Đó là, nếu tôi vô tình chạy trên một trang web xấu sử dụng quá nhiều bộ nhớ, nó chỉ bị sập mà không khiến thiết bị đầu cuối của tôi không sử dụng được.
Nhưng trong thiết lập hiện tại của tôi, máy tính bị treo với thông lượng I / O bạo lực ở chế độ nền. iotop tiết lộ kswapd0 là thủ phạm, có nghĩa là do hoán đổi. Sau khi sử dụng swapon -s
để xác định bất kỳ giao dịch hoán đổi nào được kích hoạt, tôi đã sử dụng swapoff -a
để vô hiệu hóa tất cả các giao dịch hoán đổi và swapon -s
một lần nữa để xác nhận rằng tất cả các giao dịch hoán đổi đã bị vô hiệu hóa.
Sau đó, tôi đã cố gắng tối đa hóa việc sử dụng bộ nhớ của mình một lần nữa. Than ôi, hành vi tôi mong đợi đã không xảy ra. Thay vào đó, kswapd0 cố gắng lặp đi lặp lại để trao đổi RAM và thất bại vì không có không gian trao đổi. Bởi vì nó không bao giờ bỏ cuộc, máy tính của tôi bị khóa trong trạng thái đóng băng nặng I / O vĩnh viễn, không tốt cho sức khỏe của đĩa.
Tôi đang làm điều gì sai trong việc cố gắng swapoff -a
? Tại sao hành vi khác với hành vi trước đây (có thể là trước 3.0 lần)?
fstab
dòng về trao đổi. Hãy thử nếu hành vi là như nhau.
swapoff -a
nên vô hiệu hóa trao đổi vĩnh viễn, có nghĩa là nó sẽ bị vô hiệu hóa sau lần khởi động lại tiếp theo. Tôi đã xác nhận điều này. Tuy nhiên, "cơn bão" I / O vẫn xảy ra trong phiên sau lần khởi động lại tiếp theo. Đối với hồ sơ, "cơn bão" I / O đã không xảy ra tại thời điểm tôi đã làm swapoff -a
bởi vì hoán đổi là 0 tại thời điểm đó.
swapoff -a
là không vĩnh viễn.
swapoff -a
chính nó , nếu có công cụ trong trao đổi, sẽ tạo ra rất nhiều I / O (và có thể dẫn đến các quá trình bị giết nếu không có đủ RAM thực sự). Bạn có chắc chắn đó không phảiswapoff -a
là nguyên nhân gây ra "cơn bão" I / O?