Trước khi thực sự hỏi, chỉ cần rõ ràng: có, tôi biết về bộ đệm đĩa, và không, đó không phải là trường hợp của tôi :) Xin lỗi, vì lời mở đầu này :)
Tôi đang sử dụng CentOS 5. Mọi ứng dụng trong hệ thống đều bị tráo đổi rất nhiều và hệ thống rất chậm. Khi tôi làm free -m
, đây là những gì tôi nhận được:
total used free shared buffers cached
Mem: 3952 3929 22 0 1 18
-/+ buffers/cache: 3909 42
Swap: 16383 46 16337
Vì vậy, tôi thực sự chỉ có 42 Mb để sử dụng! Theo như tôi hiểu, -/+ buffers/cache
thực sự không tính bộ nhớ cache của đĩa, vì vậy tôi thực sự chỉ có 42 Mb, phải không? Tôi nghĩ, tôi có thể sai, vì vậy tôi đã cố gắng tắt bộ nhớ đệm đĩa và nó không có tác dụng - hình ảnh vẫn giữ nguyên.
Vì vậy, tôi quyết định tìm ra ai đang sử dụng tất cả RAM của mình và tôi đã sử dụng top
nó. Nhưng, rõ ràng, nó báo cáo rằng không có quá trình sử dụng RAM của tôi. Quá trình duy nhất trong top của tôi là MySQL, nhưng nó đang sử dụng 0,1% RAM và 400Mb trao đổi. Hình ảnh tương tự khi tôi cố chạy các dịch vụ hoặc ứng dụng khác - tất cả đều được trao đổi, top
cho thấy MEM không được sử dụng (tối đa 0,1% cho bất kỳ quy trình nào).
top - 15:09:00 up 2:09, 2 users, load average: 0.02, 0.16, 0.11
Tasks: 112 total, 1 running, 111 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 4046868k total, 4001368k used, 45500k free, 748k buffers
Swap: 16777208k total, 68840k used, 16708368k free, 16632k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP COMMAND
3214 ntp 15 0 23412 5044 3916 S 0.0 0.1 0:00.00 17m ntpd
2319 root 5 -10 12648 4460 3184 S 0.0 0.1 0:00.00 8188 iscsid
2168 root RT 0 22120 3692 2848 S 0.0 0.1 0:00.00 17m multipathd
5113 mysql 18 0 474m 2356 856 S 0.0 0.1 0:00.11 472m mysqld
4106 root 34 19 251m 1944 1360 S 0.0 0.0 0:00.11 249m yum-updatesd
4109 root 15 0 90152 1904 1772 S 0.0 0.0 0:00.18 86m sshd
5175 root 15 0 90156 1896 1772 S 0.0 0.0 0:00.02 86m sshd
Khởi động lại không giúp được gì, và theo cách của họ thì rất chậm, điều mà tôi thường không mong đợi ở máy này (4 lõi, RAM 4Gb, RAID1).
Vì vậy, với điều đó - tôi khá chắc chắn rằng đây không phải là bộ đệm đĩa, người đang sử dụng RAM, vì thông thường nó nên được giảm và để các quá trình khác sử dụng RAM, sau đó chuyển sang trao đổi.
Vì vậy, cuối cùng, câu hỏi là - nếu ai đó có bất kỳ ý tưởng nào để tìm ra quá trình thực sự sử dụng bộ nhớ quá nhiều?
irc.freenode.org
. Tôi đã tạo một phòng chat để thảo luận mở rộng ở đây .
free -m
, nhưng kích thước của nó có thể được truy vấn trên Linux cat /proc/spl/kstat/zfs/arcstats | grep data_size
.