Trong môi trường máy chủ và hệ thống đa người dùng, việc nắm rõ cách theo dõi tài nguyên theo người dùng là kỹ năng sống còn. Khi một ứng dụng chạy chậm, ổ cứng đầy bất thường hoặc CPU tăng vọt, câu hỏi đầu tiên của quản trị viên luôn là: “Người dùng nào đang chiếm dụng tài nguyên?”. Bài viết này sẽ cung cấp cho bạn bộ công cụ và phương pháp toàn diện để giám sát, phân tích và kiểm soát mức sử dụng CPU, RAM, dung lượng ổ đĩa và băng thông mạng theo từng người dùng trên hệ thống Linux và Windows Server.
Khái niệm cốt lõi về theo dõi tài nguyên theo người dùng

Theo dõi tài nguyên theo người dùng là quá trình thu thập dữ liệu về mức độ sử dụng các thành phần phần cứng và phần mềm của hệ thống, được phân bổ và quy kết cho từng tài khoản người dùng cụ thể. Khác với giám sát tổng thể hệ thống, phương pháp này cho phép xác định chính xác đối tượng gây ra sự cố hoặc vi phạm chính sách sử dụng.
Bản chất của kỹ thuật này dựa trên cơ chế phân quyền và nhật ký hệ thống. Mỗi tiến trình (process) khi khởi chạy đều gắn với một User ID (UID) nhất định. Hệ điều hành ghi nhận điều này và cho phép các công cụ giám sát truy vấn thông tin theo thời gian thực hoặc dựa trên dữ liệu lịch sử.
Phân loại tài nguyên cần theo dõi

Không phải tài nguyên nào cũng được giám sát theo cùng một cách. Để xem tiến trình của một người dùng cụ thể, bạn gõ top -u username. Lệnh này hiển thị danh sách các tiến trình đang chạy, mức sử dụng CPU và RAM theo thời gian thực. Nhấn phím ‘u’ trong giao diện top và nhập tên người dùng để lọc.
htop là phiên bản nâng cấp với giao diện màu sắc trực quan hơn.
Sử dụng lệnh ps -u username -o %cpu | awk ‘{sum+=$1} END {print sum “%”}’. Lệnh này lấy tất cả tiến trình của người dùng, cộng dồn cột %CPU và in ra tổng.
Có công cụ nào giám sát tài nguyên theo người dùng trên Windows Server không?
Có. Sử dụng Performance Monitor (perfmon) với bộ đếm “Process% Processor Time” và lọc theo tên người dùng. PowerShell với lệnh Get-Process | Group-Object -Property UserName | Select-Object Name, @{Name=”CPU”;Expression={($_.Group|Measure-Object -Property CPU -Sum).Sum}} cũng là giải pháp hiệu quả.
Tại sao tổng RAM từ top lại lớn hơn RAM vật lý?
Vì top tính RSS (Resident Set Size) bao gồm bộ nhớ dùng chung giữa các thư viện. Một thư viện được 10 tiến trình dùng chung sẽ được tính 10 lần. Sử dụng smem với PSS để có số liệu chính xác.
Làm sao để theo dõi tài nguyên theo người dùng trong Docker?
Docker sử dụng cgroups để giới hạn tài nguyên. Lệnh docker stats hiển thị tài nguyên theo container. Để quy kết về người dùng, cần tích hợp với hệ thống orchestration như Kubernetes và sử dụng labels để gán container cho người dùng cụ thể.
Có thể tự động hóa việc gửi báo cáo tài nguyên theo người dùng không?
Hoàn toàn có thể. Viết script shell kết hợp các lệnh ps, du, nethogs, xuất kết quả ra file CSV hoặc HTML, sau đó dùng cron job chạy hàng ngày và gửi email qua mailx hoặc ssmtp.
Kết luận

Nắm vững cách theo dõi tài nguyên theo người dùng là kỹ năng không thể thiếu đối với bất kỳ quản trị viên hệ thống nào. Từ các lệnh cơ bản như top, ps, du đến các công cụ chuyên sâu như smem, nethogs và quota, mỗi công cụ đều có vai trò riêng trong bức tranh tổng thể về giám sát hệ thống.
Việc kết hợp giám sát thời gian thực với phân tích lịch sử, thiết lập cảnh báo tự động và xây dựng quy trình xử lý sự cố sẽ giúp bạn duy trì hiệu suất hệ thống ở mức tối ưu. Hãy bắt đầu bằng cách triển khai các lệnh cơ bản, sau đó dần dần xây dựng hệ thống giám sát hoàn chỉnh phù hợp với quy mô và nhu cầu của tổ chức.







