Swap đang dùng không đồng nghĩa máy Linux đang thiếu RAM ngay lúc này. Điều cần phân biệt là lượng dữ liệu đã nằm trong swap và hoạt động chuyển trang đang diễn ra. Bài viết hướng dẫn đọc các tín hiệu này, hiểu swappiness và phân biệt swap trên ổ đĩa với zram, zswap trước khi cân nhắc thay đổi cấu hình.
Các lệnh dưới đây dùng để quan sát trên Linux, không tạo swap, không tắt swap và không sửa tham số kernel. Đây là hướng dẫn dựa trên tài liệu, không phải báo cáo benchmark hay kết quả đo trên máy của người đọc. Tên gói và công cụ có thể khác giữa các bản phân phối.
1. Đọc available trước khi nhìn swap used
Trong free(1), available là ước tính bộ nhớ có thể dùng cho ứng dụng mới mà không cần swap, có tính đến phần bộ nhớ có thể thu hồi. Vì vậy, free thấp không tự động có nghĩa máy sắp hết RAM.
Ví dụ minh họa: máy vẫn hiển thị 1 GiB swap used sau một đợt tải, nhưng available ổn định và ứng dụng phản hồi bình thường. Chỉ con số 1 GiB đó chưa đủ để kết luận có sự cố đang diễn ra. Cần quan sát theo thời gian và đối chiếu trải nghiệm của ứng dụng, thay vì đặt mục tiêu đưa swap used về 0 bằng mọi giá.
2. Thu thập một bộ thông tin chỉ đọc
uname -r
free -h
swapon --show
vmstat 1 10
cat /proc/pressure/memory
sysctl vm.swappinessswapon --show liệt kê các vùng swap đang hoạt động, gồm loại, kích thước, mức sử dụng và độ ưu tiên theo tài liệu swapon. Không có dòng dữ liệu thường có nghĩa không có vùng swap hoạt động trong phạm vi hệ thống đang quan sát; đừng nhầm với lệnh không tồn tại hoặc bị lỗi.
Nếu /proc/pressure/memory không có, kiểm tra kernel và môi trường đang chạy thay vì coi đó là áp lực bộ nhớ bằng 0. Trong container hoặc môi trường bị hạn chế quyền, thông tin nhìn thấy có thể không phản ánh đầy đủ giới hạn của workload; cần đối chiếu cấu hình quản lý tài nguyên của môi trường đó.
3. Phân biệt dung lượng với tốc độ chuyển trang
Theo vmstat(8), swpd là lượng swap đang dùng; si và so lần lượt phản ánh lượng dữ liệu swap vào và ra mỗi giây. Dòng đầu có các tốc độ trung bình từ lúc khởi động; các dòng sau phản ánh khoảng lấy mẫu. Thống kê bộ nhớ và tiến trình vẫn là trạng thái tức thời.
Với vmstat 1 10, đừng lấy dòng đầu làm tốc độ của đúng giây vừa qua. Quan sát các dòng sau cùng thời điểm ứng dụng chậm. Khi có swap nén trong RAM, không diễn giải mọi hoạt động swap thành lưu lượng vật lý trên SSD.
| Tình huống quan sát | Cách đặt giả thuyết |
|---|---|
| Swap used khác 0, hoạt động swap thấp, độ trễ bình thường | Chưa có đủ bằng chứng cần can thiệp; tiếp tục theo dõi |
| Available giảm, swap hoạt động kéo dài, ứng dụng chậm | Điều tra áp lực bộ nhớ và tương quan với tải công việc |
| Ứng dụng chậm nhưng swap gần như không hoạt động | Không quy nguyên nhân cho swap; xem CPU, I/O, khóa và dịch vụ phụ thuộc |
Bảng là khung suy luận, không phải quy tắc chẩn đoán tuyệt đối. Một khoảng lấy mẫu ngắn có thể bỏ lỡ đợt tải đã kết thúc.
4. Dùng PSI để bổ sung góc nhìn
Pressure Stall Information mô tả thời gian workload bị đình trệ vì thiếu tài nguyên. Với memory, dòng some phản ánh thời gian ít nhất một task bị stall; full phản ánh thời gian tất cả task không nhàn rỗi cùng bị stall. Các giá trị avg10, avg60 và avg300 là trung bình theo cửa sổ thời gian, không phải phần trăm RAM đã dùng.
Hãy đối chiếu PSI với thời gian phản hồi, lượng công việc và số worker. Nếu vừa tăng số tiến trình xử lý song song rồi thấy áp lực tăng, đó là giả thuyết đáng kiểm tra. Không có một ngưỡng PSI duy nhất phù hợp mọi máy và mọi yêu cầu độ trễ.
5. Swappiness không phải ngưỡng phần trăm RAM
Tài liệu kernel về swappiness mô tả tham số trong khoảng 0–200, thể hiện chi phí tương đối giữa swap và phân trang dữ liệu dựa trên file. Nó không có nghĩa “chờ RAM đầy X phần trăm rồi mới swap”. Giá trị 0 cũng không tương đương vô hiệu hóa swap.
Vì vậy, không nên sao chép một giá trị được gọi là “tối ưu cho mọi server”. Trước thử nghiệm, ghi giá trị cũ, loại swap, đặc điểm workload và mục tiêu cần cải thiện. Thay một yếu tố mỗi lần trong môi trường kiểm soát, đo cùng loại tải và chuẩn bị khôi phục cấu hình. Bài này không yêu cầu thay đổi swappiness trên production.
6. Swap trên ổ đĩa, zram và zswap
zram tạo block device lưu dữ liệu nén trong RAM và có thể dùng làm swap. Nó vẫn tiêu thụ RAM thực và tài nguyên xử lý nén; kích thước logic được cấu hình không phải lượng RAM vật lý mới được bổ sung.
zswap là bộ đệm nén cho các trang đang được đưa ra swap, có cơ chế đẩy trang tới vùng swap phía sau khi cần. Nó không phải cùng một mô hình với việc dùng thiết bị zram làm swap. Swap file hoặc phân vùng trên ổ đĩa lại có đặc điểm lưu trữ khác.
Không bật thêm nhiều lớp chỉ vì tên gần giống nhau. Trước hết xác định bản phân phối đã cấu hình gì và ai đang quản lý nó. Việc chọn cơ chế phải xét RAM, CPU, thiết bị lưu trữ và tải thực tế, không chỉ so dung lượng swap hiển thị.
7. Vì sao không nên “dọn swap” theo phản xạ?
Lệnh tắt swap là thay đổi trạng thái hệ thống, không phải thao tác làm sạch vô hại. Tài liệu swapoff nêu trường hợp thất bại do thiếu bộ nhớ để dừng swapping. Trên máy đang chịu áp lực, mục tiêu đưa số swap used về 0 có thể làm tình hình khó kiểm soát hơn.
Không chạy swapoff -a, tạo lại swap hoặc sửa cấu hình khởi động chỉ vì một ảnh chụp biểu đồ. Nếu cần đổi cấu hình, phải có cửa sổ bảo trì, kiểm tra sức chứa và phương án phục hồi. Nếu vấn đề là ứng dụng giữ bộ nhớ tăng mãi hoặc quá nhiều worker, thay swap không giải quyết nguyên nhân đó.
8. Checklist kết luận trước khi can thiệp
- Đã phân biệt swap used với swap-in/swap-out theo thời gian.
- Đã xem available, PSI nếu có và độ trễ thực tế cùng một thời điểm.
- Đã xác định swap trên ổ đĩa hay cơ chế nén trong RAM.
- Đã kiểm tra thay đổi tải hoặc cấu hình gần thời điểm xuất hiện triệu chứng.
- Đã ghi baseline, tiêu chí thành công và cách quay về cấu hình cũ nếu cần thử điều chỉnh.
- Không dùng việc swap used về 0 làm tiêu chí duy nhất cho một hệ thống khỏe.
Swap là một phần của quản lý bộ nhớ, không phải dấu hiệu lỗi tự thân. Cách vận hành an toàn là đọc đúng số liệu, đặt giả thuyết dựa trên nhiều tín hiệu và chỉ thay cấu hình khi có mục tiêu đo được.




Chưa có bình luận. Hãy là người đầu tiên chia sẻ ý kiến.