Website được thiết kế tối ưu cho thành viên chính thức. Hãy Đăng nhập hoặc Đăng ký để truy cập đầy đủ nội dung và chức năng. Nội dung bạn cần không thấy trên website, có thể do bạn chưa đăng nhập. Nếu là thành viên của website, bạn cũng có thể yêu cầu trong nhóm Zalo "HI.AI Members" các nội dung bạn quan tâm.

Bài 8. Theo dõi tài nguyên bằng nvidia-smi, htop, nvtop

1. Đặt vấn đề

Không thể tối ưu hiệu năng nếu không đo tài nguyên. Trong máy chủ AI local, các tài nguyên cần theo dõi gồm GPU, VRAM, CPU, RAM, disk I/O, network, tiến trình Ollama, tiến trình embedding, API trung gian và database. Các công cụ như nvidia-smi, htop, nvtop giúp quản trị viên nhìn nhanh hệ thống đang hoạt động thế nào.

Theo dõi tài nguyên giúp trả lời các câu hỏi:

  • Model có dùng GPU không?
  • VRAM có đầy không?
  • CPU có bị nghẽn không?
  • RAM có đủ không?
  • Có dùng swap không?
  • GPU utilization có cao không?
  • Có tiến trình nào chiếm tài nguyên bất thường không?
  • Nhiều người dùng có làm nghẽn hệ thống không?

2. Theo dõi GPU bằng nvidia-smi

Lệnh cơ bản:

 
nvidia-smi
 

Thông tin cần xem:

  • Tên GPU.
  • Driver version.
  • CUDA version.
  • GPU utilization.
  • Memory usage.
  • Temperature.
  • Power usage.
  • Processes đang dùng GPU.
  • VRAM đã dùng/tổng.

Nếu model chạy GPU, bạn sẽ thấy tiến trình liên quan Ollama hoặc backend model sử dụng VRAM.

3. Theo dõi realtime với nvidia-smi

Có thể dùng:

 
watch -n 1 nvidia-smi
 

Lệnh này cập nhật mỗi giây. Khi gửi prompt, quan sát:

  • VRAM tăng không?
  • GPU utilization tăng không?
  • Tiến trình nào chạy?
  • Có nhiều tiến trình cạnh tranh không?
  • Nhiệt độ/power có bất thường không?

4. Theo dõi CPU/RAM bằng htop

Cài và chạy:

 
htop
 

Cần xem:

  • CPU usage từng core.
  • RAM usage.
  • Swap usage.
  • Load average.
  • Tiến trình Ollama.
  • Tiến trình Python/PHP/API.
  • Tiến trình embedding/indexing.
  • Tiến trình database.

Nếu CPU 100% nhưng GPU thấp, có thể đang chạy CPU, offload nhiều, hoặc nghẽn tiền xử lý.

5. Theo dõi GPU bằng nvtop

nvtop cho giao diện realtime trực quan hơn:

 
nvtop
 

Cần xem:

  • GPU utilization theo thời gian.
  • VRAM usage.
  • Process dùng GPU.
  • Encoder/decoder nếu có.
  • Nhiệt độ.
  • Power.

nvtop hữu ích khi benchmark và khi nhiều request đồng thời.

6. Theo dõi Ollama

Có thể dùng:

 
ollama ps
 

Lệnh này cho biết model nào đang loaded, kích thước, processor, context và thời gian còn giữ model trong bộ nhớ.

Cần xem:

  • Model có đang loaded không?
  • Dùng GPU hay CPU?
  • Context bao nhiêu?
  • Model giữ trong bộ nhớ bao lâu?
  • Có nhiều model loaded gây chiếm VRAM không?

7. Theo dõi RAM và swap

Dùng:

 
free -h
 

Cần chú ý swap. Nếu swap dùng nhiều, hệ thống có thể rất chậm. Với RAG, FAISS, metadata, nhiều container, RAM lớn là lợi thế nhưng vẫn cần theo dõi.

8. Theo dõi disk

Dùng:

 
df -h
 

và:

 
iostat -xz 1
 

nếu có cài sysstat.

Cần xem:

  • Dung lượng ổ.
  • I/O wait.
  • Ổ nào đang bận.
  • Model/index đặt trên SSD hay HDD.
  • Log có tăng quá nhanh không.
  • Backup có chạy trùng giờ cao điểm không.

9. Theo dõi service

Nếu Ollama chạy systemd:

 
systemctl status ollama
journalctl -u ollama -f
 

Cần xem lỗi load model, lỗi GPU, request lỗi, service restart.

10. Theo dõi API trung gian

API cần log:

  • Request count.
  • Latency.
  • Lỗi.
  • Timeout.
  • Queue length.
  • Model gọi.
  • Token input/output nếu có.
  • RAG retrieval time.
  • Generation time.

Nếu chỉ theo dõi GPU mà không theo dõi API, có thể bỏ sót nghẽn ở ứng dụng.

11. Theo dõi theo kịch bản

Nên đo khi:

  • Một người dùng hỏi.
  • Nhiều người dùng hỏi.
  • RAG bật/tắt.
  • Context ngắn/dài.
  • Model nhỏ/lớn.
  • Đang embedding batch.
  • Đang backup.
  • Đang chạy Docker service khác.

Theo dõi trong nhiều kịch bản mới hiểu hệ thống thật.

12. Kết luận

nvidia-smi, htop, nvtop, ollama ps và log API là các công cụ cơ bản để theo dõi hiệu năng Ollama. Bệnh viện cần biết GPU có dùng đúng không, VRAM có đủ không, CPU/RAM có nghẽn không, swap có xuất hiện không, queue có dài không và request nào gây tải. Không có đo lường thì không thể tối ưu đúng.