- Quản lý hiệu suất Linux: Mục đích và công cụ theo dõi
Việc tối ưu hóa hệ thống không chỉ đơn giản là thay đổi một số cài đặt, thông số nhân hay cấu hình hệ thống. Đây là một quá trình phức tạp, đòi hỏi phải theo dõi, thu thập dữ liệu, kiểm tra và đánh giá trước khi tối ưu hóa cũng như sau đó. Hiệu suất của các hệ thống khác nhau sẽ phụ thuộc vào phần cứng, ứng dụng và mục tiêu sử dụng.
Hiệu suất của hệ thống được tạo nên từ nhiều thành phần con, bao gồm:
- CPU
- Bộ nhớ (Memory)
- Đầu vào/Đầu ra (I/O)
- Mạng (Network)
Những thành phần này tương tác với nhau, do đó việc hiểu rõ cách hoạt động của từng thành phần và xác định điểm nghẽn cổ chai là rất quan trọng trong quá trình tối ưu hóa.
Loại ứng dụng
Các ứng dụng có thể được phân loại dựa trên đặc tính I/O hoặc CPU:
-
Liên quan đến I/O: Các ứng dụng này xử lý khối lượng lớn dữ liệu, yêu cầu nhiều bộ nhớ và lưu trữ, thường thực hiện nhiều thao tác đọc ghi dữ liệu nhưng ít cần đến CPU. Ví dụ điển hình là máy chủ cơ sở dữ liệu hoặc máy chủ tệp.
-
Liên quan đến CPU: Những ứng dụng này yêu cầu sử dụng nhiều tài nguyên CPU, chẳng hạn như máy chủ web/mail với tải cao, xử lý ảnh/đ VIDEO hoặc tính toán khoa học.
Dưới đây là hai ví dụ về hành vi của hệ thống khi sao chép một tập tin lớn và khi CPU đang thực hiện các phép tính nặng.
$ htop 1
processes -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 4 140 1962724 335516 4852308 0 0 388 65024 1442 563 0 2 47 52 0
$ htop 1
processes -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
4 0 140 3625096 334256 3266584 0 0 0 16 1054 470 100 0 0 0 0
Sự khác biệt chính giữa hai trường hợp trên là cột id, đại diện cho tỷ lệ CPU không hoạt động. Khi sao chép tệp, id duy trì ở mức khoảng 50%, trong khi khi CPU thực hiện các phép tính nặng, id hầu như bằng 0.
Tiêu chuẩn đánh giá
Để biết hiệu suất hệ thống tốt hay kém, chúng ta cần thiết lập một mức tiêu chuẩn. Nếu dữ liệu thu thập vượt qua mức này, hệ thống được coi là yếu kém. Việc thiết lập tiêu chuẩn này đòi hỏi kiến thức lý thuyết, kiểm thử tải thêm và kinh nghiệm của quản trị viên hệ thống.
Công cụ theo dõi
Chúng ta có thể sử dụng những công cụ đơn giản để giám sát hiệu suất Linux:
| Công cụ | Mô tả |
|---|---|
| htop | Xem trạng thái tiến trình và hệ thống. |
| iostat | Kiểm tra tải CPU và tình trạng ổ đĩa. |
| sar | Công cụ tổng hợp để xem trạng thái hệ thống. |
| nload | Theo dõi băng thông mạng thời gian thực. |
| dstat | Công cụ tổng hợp hiển thị nhiều thông tin như vmstat, iostat... |
CPU
Hiệu suất CPU phụ thuộc vào các tài nguyên đang chạy trên nó. Để hiểu rõ hơn về hiệu suất CPU, cần nắm vững các khái niệm cơ bản như gián đoạn (interrupts), lập lịch tiến trình (scheduling), chuyển ngữ cảnh (context switching) và hàng đợi chạy (run queue).
Ví dụ minh họa bằng cách so sánh CPU với một nhân viên chăm chỉ: anh ấy luôn có danh sách công việc (run queue), được quản lý bởi cấp trên (scheduler). Anh ấy báo cáo kết quả làm việc (interrupts), trao đổi với cấp trên về tiến độ (context switching).
Thiết lập tiêu chuẩn
Một số tiêu chí phổ biến để đánh giá hiệu suất CPU bao gồm:
- Tỷ lệ sử dụng CPU cân đối ở mức 65%-70% thời gian người dùng, 30%-35% thời gian hệ thống và 0%-5% thời gian rảnh.
- Số lần chuyển ngữ cảnh phù hợp với tỷ lệ sử dụng CPU.
- Hàng đợi chạy không nên vượt quá 1-3 luồng mỗi bộ xử lý.
Công cụ htop
Herramienta htop giúp theo dõi hiệu suất toàn diện của hệ thống:
$ htop 1
processes -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 1 140 2787980 336304 3531996 0 0 0 128 1166 5033 3 3 70 25 0
Các thông số chính:
r: Số luồng trong hàng đợi chạy.b: Số tiến trình bị chặn chờ I/O.in: Số gián đoạn được xử lý.cs: Số lần chuyển ngữ cảnh.us: Phần trăm CPU được sử dụng bởi người dùng.sy: Phần trăm CPU được sử dụng bởi hệ thống.wa: Phần trăm thời gian CPU rảnh mà chờ I/O.
Bộ nhớ
Bộ nhớ vật lý và ảo đóng vai trò quan trọng trong hiệu suất hệ thống. Linux sử dụng vùng bộ nhớ ảo để mở rộng không gian địa chỉ chương trình, cho phép chạy các chương trình lớn hơn kích thước RAM. Điều này đi kèm với chi phí trao đổi dữ liệu giữa RAM và SWAP.
Công cụ dstat
Dstat giúp tích hợp nhiều thông tin hiệu suất trong một công cụ duy nhất:
$ dstat 1
procs -------mem usage------ -dsk/total- ----net/eth0- ---paging-- ---system--
r b used buff cach read writ recv send in out int
2 1 2787980k 336304k 3531996k 0 128k 0 0 0 1166 5033 3 3
Mạng
Kiểm tra hiệu suất mạng là phức tạp nhất trong tất cả các thành phần con của Linux. Nhiều yếu tố như độ trễ, tắc nghẽn, mất gói có thể ảnh hưởng đến hiệu suất mạng. Công cụ ethtool giúp xem cấu hình và tốc độ card mạng:
# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Speed: 100Mb/s
Duplex: Full
Công cụ iperf
Iperf giúp kiểm tra băng thông mạng giữa hai máy chủ:
# iperf -c 172.16.38.36 -t 30 -i 5
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 5.0 sec 58.8 MBytes 98.6 Mbits/sec
[ 3] 5.0-10.0 sec 55.0 MBytes 92.3 Mbits/sec