CH-J Server Managerquản lý máy chủ qua SSH
Menu
Tất cả hướng dẫn và bài viết →

Cách đọc RAM, bộ nhớ đệm và swap trên máy chủ Linux

Ý nghĩa các cột của free, vì sao mức sử dụng bộ nhớ cao thường vẫn bình thường, và dấu hiệu nào thực sự cho thấy thiếu bộ nhớ.

Đọc available thay vì free

Linux dùng phần bộ nhớ chưa được sử dụng làm bộ nhớ đệm đĩa, nên free thấp trên máy chủ hoạt động tốt là bình thường. Cột available là ước tính của nhân về lượng bộ nhớ mà tác vụ mới có thể dùng mà không cần đưa trang vào swap. Đây là con số cần theo dõi. Cách tính used cụ thể phụ thuộc phiên bản công cụ, nên đừng so sánh nó giữa các hệ thống khác nhau.

free -h
grep -E 'MemAvailable|Shmem:|SReclaimable' /proc/meminfo

Phần bộ nhớ đệm có thể và không thể giải phóng

Bộ nhớ đệm trang thường có thể được giải phóng khi ứng dụng cần bộ nhớ. Bộ nhớ dùng chung và tmpfs (Shmem) cũng xuất hiện trong bộ nhớ đệm, nhưng không thể đơn giản loại bỏ vì chúng chứa dữ liệu không có bản sao trên đĩa. Vì vậy, bộ nhớ đệm lớn mà available thấp thường có nghĩa là tmpfs hoặc vùng bộ nhớ dùng chung lớn.

df -h -t tmpfs
sudo slabtop -o | head -15

swap đang được dùng chưa chắc là vấn đề

Máy chủ có thể giữ các trang ít dùng trong swap hàng tuần mà không gây hại. Điều gây ảnh hưởng là việc di chuyển liên tục. Theo dõi các cột si và so trong vmstat: giá trị liên tục lớn hơn không nghĩa là hệ thống đang tích cực chuyển trang qua lại với swap, dấu hiệu thiếu bộ nhớ thực sự.

swapon --show
vmstat 1 5

Tìm đối tượng sử dụng bộ nhớ

Sắp xếp tiến trình theo bộ nhớ thường trú. RSS tính các trang dùng chung giữa nhiều tiến trình vào từng tiến trình, nên không thể chỉ cộng các giá trị của nhiều tiến trình lại. Công cụ có PSS, như smem, cho tổng hợp lý hơn nếu đã được cài đặt.

ps -eo pid,user,rss,comm --sort=-rss | head -15

Nhận biết tình trạng thiếu bộ nhớ thực sự

Các dấu hiệu là available thấp, liên tục chuyển trang qua lại với swap và tiến trình bị cơ chế out-of-memory killer chấm dứt. Kiểm tra nhật ký nhân. Đừng chạy drop_caches để các con số trông đẹp hơn: việc này chỉ khiến máy chủ phải đọc lại từ đĩa và không giải quyết được gì.

sudo journalctl -k --no-pager | grep -iE 'out of memory|oom-kill'

Bộ nhớ trong CH-J Server Manager

System Monitor đọc các giá trị này qua SSH. Trên Linux, công cụ tính used bằng MemTotal − MemFree − Buffers − Cached − SReclaimable, còn available là ước tính của nhân. Bộ nhớ dùng chung thuộc Cached và không thể giải phóng; các hạng mục trên thanh không chồng lặp. Vì công thức khác một số phiên bản free nên các con số có thể không khớp hoàn toàn. Công cụ cũng hiển thị swap cùng lịch sử sử dụng. ZFS ARC không được xử lý riêng, nên trên máy chủ ZFS, nó được tính là bộ nhớ đã dùng.

Tài liệu chi tiết

man: free →

man: proc_meminfo →

Mở khóa sinh trắc học và bảo mật →