Trong quản trị hệ thống Linux, trong khi lệnh top cổ điển hiển thị văn bản đen trắng đơn điệu, htop là công cụ giám sát thời gian thực tương tác (Interactive Process Viewer) được các kỹ sư SRE và DevOps yêu thích nhất nhờ giao diện trực quan, bảng màu sinh động và khả năng điều hướng cực nhanh.
Dưới đây là ảnh chụp màn hình một hệ thống Linux Production thực tế đang chạy htop:

Hãy cùng giải mã chi tiết từng con số, từng dải màu và từng cột dữ liệu xuất hiện trên màn hình này dưới lăng kính của một Chuyên gia Vận hành Hệ thống.
1. Khu Vực Đo Lường Hệ Thống (Phần Đầu - Header Meters)
Màn hình phía trên cung cấp bức tranh toàn cảnh về sức khỏe phần cứng của máy chủ tại thời điểm hiện tại:
0[|| 2.0%] 3[| 0.7%] 6[| 0.7%] ... 21[| 0.7%]
1[| 0.7%] 4[ 0.0%] 7[| 0.7%] ... 22[|| 1.3%]
2[| 0.7%] 5[| 0.7%] 8[|| 5.3%] ... 23[| 0.7%]
Mem[||||||||||||||||||||||||||||||||||||||||| 1.99G/15.5G]
Swp[ 0K/4.00G]
1.1. Các thanh CPU (Từ Core 0 đến Core 23)
Hệ thống trong ảnh được trang bị tới 24 CPU Cores logic (đánh số từ 0 đến 23). htop hiển thị mức độ bận rộn của từng core riêng biệt.
Ý nghĩa các dải màu trên thanh đo CPU:
- 🟢 Xanh lá cây (User): Tỷ lệ CPU tiêu tốn bởi các tiến trình của người dùng/ứng dụng thông thường (User space processes như Mongosh, Redis, Node.js).
- 🔴 Đỏ (System / Kernel): Tỷ lệ CPU tiêu tốn bởi nhân Linux Kernel để xử lý các System Calls, ngắt mạng, điều khiển phần cứng.
- 🔵 Xanh dương (Low-priority / Nice): CPU dành cho các tiến trình có độ ưu tiên thấp (Nice > 0).
- 🟡 Vàng / Cam (IRQ / SoftIRQ): Thời gian CPU phục vụ các yêu cầu ngắt phần cứng hoặc phần mềm.
- 🟣 Tím (Steal Time): Trong môi trường máy ảo (Cloud VM/VPS), đây là tỷ lệ CPU bị phần mềm quản lý ảo hóa (Hypervisor) "lấy trộm" để cấp cho máy ảo khác.
- ⚪ Xanh lơ / Cyan (I/O Wait): CPU rảnh rỗi nhưng phải đứng đợi ổ cứng đọc/ghi dữ liệu.
💡 Nhận định thực tế: Hầu hết các core trong ảnh chỉ dao động từ
0.0%đến5.3%. Điều này chứng tỏ CPU của máy chủ đang hoạt động cực kỳ nhẹ nhàng, dư thừa năng lực xử lý.
1.2. Thanh Bộ Nhớ RAM (Mem) & Bộ Nhớ Ảo (Swp)
Mem [ 1.99G/15.5G ]: Tổng dung lượng RAM vật lý của server là 15.5 GB, và hiện tại đang sử dụng 1.99 GB.- 🟢 Màu xanh lá: Lượng RAM đang thực sự bị các ứng dụng chiếm giữ (Used Memory).
- 🔵 Màu xanh dương: Vùng đệm đĩa (Buffers).
- 🟡 Màu vàng / cam: Bộ nhớ đệm đọc file (Page Cache).
Swp [ 0K/4.00G ]: Phân vùng Swap có tổng dung lượng 4.00 GB, và hiện tại đang dùng 0 KB (hoàn toàn chưa đụng tới Swap).- 🎯 Góc nhìn SRE: Khi
Swap = 0Kvà RAM trống còn rất nhiều, hệ thống đang ở trạng thái tối ưu, không có hiện tượng nghẽn bộ nhớ hay nguy cơ bị OOM Killer can thiệp.
- 🎯 Góc nhìn SRE: Khi
1.3. Chỉ Số Tổng Hợp (Góc Trên Bên Phải)
Tasks: 92, 343 thr, 0 kthrr; 2 running
Load average: 0.05 0.18 0.20
Uptime: 01:37:44
| Chỉ số | Giá trị trong ảnh | Giải thích chi tiết |
|---|---|---|
Tasks | 92 | Tổng số tiến trình (Processes) độc lập đang tồn tại trên hệ thống |
thr | 343 | Tổng số luồng thực thi (Threads) được tạo ra bởi các tiến trình trên |
kthrr | 0 | Số lượng luồng của Kernel (Kernel threads) |
running | 2 | Chỉ có đúng 2 luồng đang thực sự chạy trên CPU tại thời điểm chụp ảnh (các luồng còn lại đang ở trạng thái ngủ/chờ sự kiện) |
Load average | 0.05 0.18 0.20 | Tải trung bình của hệ thống trong 1 phút, 5 phút và 15 phút gần nhất |
Uptime | 01:37:44 | Máy chủ đã hoạt động liên tục được 1 giờ, 37 phút, 44 giây kể từ lần khởi động gần nhất |
[!NOTE] Quy tắc vàng phân tích Load Average: Máy chủ có 24 Cores, nghĩa là ngưỡng chịu tải tối đa lý tưởng là
24.00. Mức tải hiện tại chỉ là0.05, tương đương hệ thống chỉ đang dùng chưa tới 0.3% công suất tổng thể!
2. Bảng Danh Sách Tiến Trình (Process List Table)
Nửa dưới màn hình là bảng danh sách các tiến trình đang hoạt động:
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
3372 root 20 0 1303M 208M 87904 R 4.6 1.3 0:00.07 mongosh --quiet --eval db.adminCommand('ping').ok
340 root 20 0 2648M 59512 0 S 0.7 0.4 0:01.29 /usr/bin/containerd
791 999 20 0 39392 9632 6244 S 0.7 0.1 0:33.75 redis-server *:6379
966 65532 20 0 1271M 38456 0 S 0.7 0.2 0:02.74 /app
3715 root 20 0 3786M 110M 0 S 0.7 0.7 0:00.62 /usr/bin/dockerd -H fd:// ...
46 root 19 -1 50400 17116 15796 S 0.0 0.1 0:00.13 /usr/lib/systemd/systemd-journald
2.1. Nhóm Định Danh & Phân Quyền (PID, USER, PRI, NI)
PID(Process ID): Số nguyên định danh duy nhất cho từng tiến trình.USER: Tài khoản người dùng sở hữu tiến trình:root: Tài khoản quản trị tối cao.999: User hệ thống được tạo riêng cho dịch vụ Redis (redis-server).65532: User không đặc quyền (non-root) thường dùng trong các Distroless Container để chạy ứng dụng/app.
PRI(Priority) &NI(Nice Value):PRI: Mức độ ưu tiên thực tế do bộ lập lịch của Kernel (Linux CFS Scheduler) quyết định. Mặc định là20.NI: Giá trị điều chỉnh độ ưu tiên thủ công (chạy từ-20đến19):- Giá trị càng âm: Độ ưu tiên càng cao (ích kỷ, đòi nhiều CPU hơn).
- Giá trị càng dương: Độ ưu tiên càng thấp (lịch sự, nhường CPU cho process khác).
- 🔍 Ví dụ trong ảnh: Tiến trình PID
46(systemd-journald) cóNI = -1vàPRI = 19, cho thấy dịch vụ ghi log hệ thống này được ưu tiên hơn các tiến trình bình thường để đảm bảo không bị rớt log.
2.2. Bộ Ba Chỉ Số Bộ Nhớ: VIRT, RES, SHR (Điểm Dễ Gây Hiểu Lầm Nhất!)
Đây là phần khiến nhiều kỹ sư bối rối nhất. Hãy phân biệt rõ bản chất của chúng:
| Cột | Tên đầy đủ | Bản chất kỹ thuật | Giá trị ví dụ trong ảnh |
|---|---|---|---|
VIRT | Virtual Memory Size | Tổng dung lượng bộ nhớ ảo mà tiến trình xin Kernel cấp phát. Bao gồm mã chương trình, thư viện .so, bộ nhớ heap/stack và cả những trang nhớ chưa thực sự được ghi dữ liệu | PID 3715 (dockerd) có VIRT = 3786M (gần 3.8GB) |
RES | Resident Memory Size | Dung lượng RAM vật lý THỰC TẾ mà tiến trình đang chiếm giữ trong thanh RAM của máy. Đây mới là con số thực phản ánh mức tiêu tốn tài nguyên! | PID 3715 (dockerd) có RES = 110M (chỉ tiêu tốn 110MB RAM thực tế) |
SHR | Shared Memory Size | Lượng bộ nhớ có thể chia sẻ chung với các tiến trình khác (chủ yếu là các thư viện dùng chung như libc.so, libcrypto.so) | PID 3372 (mongosh) có SHR = 87904 KB (~85MB) |
[!WARNING] ❌ Hiểu lầm tai hại: Nhìn thấy
VIRTcủa một ứng dụng lên tới 4GB hay 8GB rồi hốt hoảng nghĩ rằng server sắp hết RAM! ✅ Quy tắc chuẩn: Luôn nhìn vào cộtRESđể biết ứng dụng đang thực sự chiếm bao nhiêu megabyte RAM vật lý.
2.3. Trạng Thái, Tài Nguyên Tiêu Thụ & Lệnh (S, CPU%, MEM%, TIME+, Command)
S(State - Trạng thái tiến trình):R(Running): Đang chạy trên CPU (như PID3372mongosh).S(Sleeping): Đang ngủ chờ tài nguyên mạng/I/O (hầu hết các daemon nền đều ở trạng thái này).D(Uninterruptible Sleep): Đang chờ ổ cứng/phần cứng, không thể kill bằngkill -9.Z(Zombie): Tiến trình đã kết thúc nhưng chưa được cha dọn dẹp.
CPU%: Tỷ lệ phần trăm sức mạnh của 1 Core CPU mà tiến trình đang dùng tại thời điểm làm mới màn hình (PID 3372 chiếm4.6%).MEM%: Tỷ lệ phần trăm tổng dung lượng RAM vật lý của server mà tiến trình đang chiếm (RES / 15.5GB). Ví dụ PID 3372 chiếm1.3%RAM.TIME+: Tổng thời gian CPU tích lũy mà tiến trình đã tiêu tốn kể từ khi khởi chạy (Ví dụ PID791Redis đã tích lũy0:33.75giây thời gian xử lý CPU).Command: Đường dẫn file nhị phân và toàn bộ các tham số khởi chạy của tiến trình:PID 3372: Lệnh chạy script kiểm tra định kỳ sức khỏe cơ sở dữ liệumongosh --quiet --eval db.adminCommand('ping').ok.PID 340 & 3715: Runtime quản lý containercontainerdvà Docker daemondockerd.PID 791: Cơ sở dữ liệu in-memoryredis-server *:6379.PID 966 & 1321: Ứng dụng nghiệp vụ chính/app.PID 1: Tiến trình khởi tạo gốc của hệ thống/sbin/init(Systemd).
3. Các Phím Chức Năng Nâng Cao (Thanh Menu Dưới Cùng)
Thanh màu xanh dưới cùng liệt kê các phím tắt từ F1 đến F10 giúp bạn điều khiển hệ thống bằng một chạm:
F1Help F2Setup F3Search F4Filter F5Tree F6SortBy F7Nice -F8Nice +F9Kill F10Quit
| Phím tắt | Tên chức năng | Ứng dụng thực chiến của SRE |
|---|---|---|
F1 | Help | Mở bảng hướng dẫn tra cứu phím tắt chi tiết |
F2 | Setup | Tùy biến giao diện: Thêm/bớt cột, đổi kiểu hiển thị CPU sang dạng đồ thị, đổi màu sắc giao diện |
F3 | Search | Tìm kiếm tiến trình theo tên hoặc PID (nhấn F3 nhiều lần để nhảy đến kết quả tiếp theo) |
F4 | Filter | Bộ lọc cực mạnh: Chỉ hiển thị các dòng khớp với từ khóa (Ví dụ gõ redis để màn hình chỉ còn lại các tiến trình Redis) |
F5 | Tree View | Chế độ hiển thị cây phả hệ (Cha - Con): Giúp bạn nhận diện ngay tiến trình cha (PPID) nào đã sinh ra các tiến trình con |
F6 | SortBy | Chọn tiêu chí sắp xếp bảng: Xếp theo CPU%, MEM%, PID hoặc TIME+ |
F7 / F8 | Nice - / Nice + | Tăng (F7) hoặc giảm (F8) độ ưu tiên của tiến trình đang chọn |
F9 | Kill | Mở menu gửi tín hiệu Signal trực tiếp (mặc định là 15 SIGTERM, có thể chọn 9 SIGKILL hoặc 1 SIGHUP) |
F10 | Quit | Thoát khỏi htop an toàn (hoặc phím tắt q) |
🚀 Mẹo Phím Tắt Nhanh Cho Chuyên Gia (Không Cần Nhấn F-keys)
P(Shift + P): Sắp xếp danh sách tiến trình ngay lập tức theo tiêu thụ CPU cao nhất.M(Shift + M): Sắp xếp danh sách ngay lập tức theo tiêu thụ RAM (RES) cao nhất.T(Shift + T): Sắp xếp theo thời gian chạy CPU (TIME+) lâu nhất.Space(Phím cách): Đánh dấu (Tag) một tiến trình. Bạn có thể đánh dấu nhiều tiến trình cùng lúc rồi nhấnF9để kill đồng loạt.c: Đánh dấu một tiến trình cùng toàn bộ các tiến trình con của nó.U(Shift + U): Lọc và chỉ xem các tiến trình của một User cụ thể.l(chữ L thường): Xem danh sách tất cả các file mà tiến trình đang mở (tương đương lệnhlsof -p <PID>).
Bài tiếp theo đề xuất: Đọc Hiểu Toàn Bộ Các Giá Trị Trong Lệnh free – Giải mã chi tiết các chỉ số RAM, Buff/Cache, Swap và dòng Comm (free -v -h) từ ảnh chụp thực tế.