Unix / Linux - Hiệu suất Hệ thống

Xin chào các bạn đam mê công nghệ! Là một giáo viên khoa học máy tính ở khu phố gần gũi của bạn, tôi rất vui mừng được hướng dẫn các bạn qua thế giới đầy魅力 của hiệu suất hệ thống Unix/Linux. Đừng lo lắng nếu bạn mới bắt đầu học lập trình - chúng ta sẽ bắt đầu từ những基础知识 và dần dần nâng cao. Vậy, hãy lấy một tách cà phê (hoặc trà, nếu đó là sở thích của bạn), và cùng nhau bắt đầu!

Unix / Linux - System Performance

Các Thành Phần Hiệu Suất

Trước khi chúng ta bắt đầu điều chỉnh hệ thống, việc hiểu những gì tạo nên hiệu suất hệ thống là rất quan trọng. Hãy tưởng tượng máy tính của bạn như một dàn nhạc được điều chỉnh kỹ lưỡng - mỗi thành phần đều đóng vai trò quan trọng trong việc tạo ra một buổi biểu diễn hài hòa.

1. Sử Dụng CPU

Bộ xử lý trung tâm (CPU) giống như người chỉ huy của dàn nhạc. Nó chịu trách nhiệm thực hiện các lệnh và điều phối tất cả các thành phần khác. Khi chúng ta nói về sử dụng CPU, chúng ta đang đề cập đến mức độ bận rộn của người chỉ huy này.

2. Sử Dụng Bộ Nhớ

Bộ nhớ, hoặc RAM, giống như bản nhạc cho dàn nhạc của chúng ta. Nó lưu trữ dữ liệu mà CPU cần truy cập nhanh. Nếu chúng ta hết bộ nhớ, hiệu suất của chúng ta có thể giảm mạnh.

3. Đầu Vào/Đầu Ra Đĩa

Đầu vào/đầu ra đĩa (I/O) giống như quá trình các nhạc công lấy nhạc cụ mới hoặc bản nhạc. Nó liên quan đến việc đọc từ hoặc ghi vào đĩa cứng, điều này có thể chậm hơn so với việc truy cập RAM.

4. Hiệu Suất Mạng

Hiệu suất mạng tương tự như cách dàn nhạc có thể nghe và giữ nhịp với nhau. Nó liên quan đến tốc độ và hiệu quả của việc truyền dữ liệu qua mạng.

Các Công Cụ Hiệu Suất

Bây giờ chúng ta đã hiểu các thành phần, hãy cùng xem xét một số công cụ chúng ta có thể sử dụng để đo lường và cải thiện hiệu suất hệ thống. Tôi thích nghĩ rằng những công cụ này là những dụng cụ điều chỉnh của dàn nhạc.

1. Lệnh top

Lệnh top giống như bảng điều khiển của hệ thống. Nó cung cấp một cái nhìn thực tế về các tiến trình đang chạy và tài nguyên hệ thống.

$ top

Lệnh này sẽ hiển thị một danh sách liên tục được cập nhật các tiến trình, được sắp xếp theo sử dụng CPU mặc định. Hãy phân tích những gì bạn sẽ thấy:

  • PID: ID tiến trình
  • USER: Người dùng sở hữu tiến trình
  • PR: Độ ưu tiên
  • NI: Giá trị nice (ảnh hưởng đến độ ưu tiên)
  • VIRT: Bộ nhớ ảo sử dụng
  • RES: Bộ nhớ vật lý sử dụng
  • SHR: Bộ nhớ chia sẻ
  • S: Trạng thái tiến trình
  • %CPU: Sử dụng CPU
  • %MEM: Sử dụng bộ nhớ
  • TIME+: Thời gian CPU tổng cộng
  • COMMAND: Tên lệnh

2. Lệnh vmstat

Lệnh vmstat giống như ống nghe của hệ thống - nó báo cáo thông tin về tiến trình, bộ nhớ, trang, block I/O,陷阱 và hoạt động CPU.

$ vmstat 2 5

Lệnh này sẽ hiển thị thống kê hệ thống mỗi 2 giây, trong 5 lần lặp. đầu ra bao gồm:

  • r: Số tiến trình chờ thời gian chạy
  • b: Số tiến trình trong giấc ngủ không thể被打断
  • swpd: Lượng bộ nhớ ảo sử dụng
  • free: Lượng bộ nhớ trống
  • buff: Lượng bộ nhớ được sử dụng làm bộ đệm
  • cache: Lượng bộ nhớ được sử dụng làm cache
  • si: Lượng bộ nhớ được swap vào từ đĩa
  • so: Lượng bộ nhớ được swap ra đến đĩa
  • bi: Số block nhận từ thiết bị block
  • bo: Số block gửi đến thiết bị block
  • in: Số interrupt mỗi giây
  • cs: Số context switch mỗi giây
  • us: Thời gian chạy mã không phải kernel
  • sy: Thời gian chạy mã kernel
  • id: Thời gian闲置
  • wa: Thời gian chờ I/O

3. Lệnh iostat

Lệnh iostat giống như speedometer cho đĩa của bạn. Nó báo cáo thống kê CPU và đầu vào/đầu ra cho thiết bị và phân vùng.

$ iostat -x 2 5

Lệnh này sẽ hiển thị thống kê mở rộng mỗi 2 giây, trong 5 lần lặp. Đầu ra bao gồm:

  • Device: Tên thiết bị
  • rrqm/s: Số yêu cầu đọc合并 mỗi giây
  • wrqm/s: Số yêu cầu ghi合并 mỗi giây
  • r/s: Đọc mỗi giây
  • w/s: Ghi mỗi giây
  • rkB/s: Kilobyte đọc mỗi giây
  • wkB/s: Kilobyte ghi mỗi giây
  • avgrq-sz: Kích thước yêu cầu trung bình trong sectors
  • avgqu-sz: Độ dài hàng đợi trung bình
  • await: Thời gian trung bình cho yêu cầu I/O
  • svctm: Thời gian dịch vụ trung bình
  • %util: Phần trăm thời gian CPU trong đó các yêu cầu I/O được phát sinh

4. Lệnh netstat

Lệnh netstat giống như điều khiển giao thông cho mạng của bạn. Nó hiển thị các kết nối mạng, bảng định tuyến, thống kê giao diện, kết nối masquerade, và thành viên multicast.

$ netstat -tuln

Lệnh này sẽ hiển thị:

  • Kết nối Internet đang hoạt động (TCP và UDP)
  • Socket đang lắng nghe
  • Địa chỉ và số cổng số học

Đầu ra bao gồm:

  • Proto: Giao thức (TCP hoặc UDP)
  • Recv-Q: Dữ liệu排队 cho nhận
  • Send-Q: Dữ liệu排队 cho gửi
  • Local Address: Địa chỉ cuối cùng của socket
  • Foreign Address: Địa chỉ cuối cùng của socket
  • State: Trạng thái của socket

5. Lệnh sar

Lệnh sar (System Activity Reporter) giống như một máy ghi âm đen cho hệ thống của bạn. Nó thu thập, báo cáo và lưu trữ thông tin hoạt động hệ thống.

$ sar -u 2 5

Lệnh này sẽ hiển thị thống kê sử dụng CPU mỗi 2 giây, trong 5 lần lặp. Đầu ra bao gồm:

  • %user: Phần trăm sử dụng CPU ở cấp người dùng
  • %nice: Phần trăm sử dụng CPU ở cấp người dùng với ưu tiên nice
  • %system: Phần trăm sử dụng CPU ở cấp hệ thống
  • %iowait: Phần trăm thời gian CPU闲置 trong đó hệ thống có yêu cầu I/O outstanding
  • %steal: Phần trăm thời gian chờ không tự nguyện của CPU ảo trong khi hypervisor đang phục vụ CPU ảo khác
  • %idle: Phần trăm thời gian CPU闲置 và hệ thống không có yêu cầu I/O outstanding

Dưới đây là bảng tóm tắt các công cụ hiệu suất:

Lệnh Mục Đích Thông Tin Quan Trọng
top Monitor thực tế hệ thống Danh sách tiến trình, sử dụng CPU, sử dụng bộ nhớ
vmstat Thống kê bộ nhớ ảo Tiến trình, bộ nhớ, trang, I/O block, hoạt động CPU
iostat Thống kê I/O Thống kê CPU, thiết bị I/O
netstat Thống kê mạng Kết nối mạng, bảng định tuyến, thống kê giao diện
sar Báo cáo hoạt động hệ thống Sử dụng CPU, bộ nhớ, I/O hoạt động, hoạt động mạng

Nhớ rằng, việc thành thạo các công cụ này giống như học chơi một nhạc cụ - nó đòi hỏi sự thực hành! Đừng nản lòng nếu cảm thấy quá tải ban đầu. Bắt đầu với một công cụ, hiểu rõ đầu ra của nó, sau đó chuyển sang công cụ tiếp theo.

Trong những năm dạy học của tôi, tôi đã thấy rằng học sinh nào thường xuyên thử nghiệm các công cụ này trên hệ thống của riêng họ đều phát triển một sự hiểu biết sâu sắc hơn về hiệu suất hệ thống. Đó giống như học cách nghe từng nhạc cụ trong dàn nhạc - đột nhiên, bạn có thể xác định chính xác nơi cần cải thiện.

Vậy, các bạn học sinh, tôi khuyến khích các bạn mở terminal và bắt đầu khám phá. Ai biết đâu? Bạn có thể trở thành người chỉ huy hiệu suất hệ thống tiếp theo!

Credits: Image by storyset