Cách tìm tiến trình sử dụng hầu hết CPU trong Linux

Tác giả Network Engineer, T.Mười 23, 2021, 12:32:17 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách tìm tiến trình sử dụng hầu hết CPU trong Linux


Nhiều khi những tình huống như vậy xảy ra trong Linux, nơi chúng ta phải đối phó với tình trạng ứng dụng không phản hồi hoặc các ứng dụng chạy chậm do sử dụng CPU. Điều này xảy ra khi CPU hệ thống Linux của mình rất bận. Hầu hết thời gian, nó phải đợi cho đến khi CPU rảnh và xếp hàng để xử lý các yêu cầu đang chờ xử lý của nó.

Bất cứ khi nào CPU bị chiếm hoàn toàn bởi các tiến trình của hệ thống Linux, CPU sẽ trở nên khó xử lý các yêu cầu khác. Tất cả các yêu cầu còn lại phải được dừng lại cho đến khi CPU được giải phóng. Điều này trở thành một trở ngại rất lớn.
Chúng ta phải sử dụng lệnh thích hợp để biết các quá trình đang ảnh hưởng đến CPU.

Trong bài viết này, mình sẽ cho biết cách mình có thể giải quyết các vấn đề liên quan đến CPU với sự trợ giúp của các lệnh sau, cũng như xem cách tìm các tiến trình đang sử dụng hầu hết CPU Linux.

1. Cách tìm tiến trình sử dụng hầu hết CPU trong Linux.

Tìm mức sử dụng CPU là một nhiệm vụ rất quan trọng. Linux đi kèm với một số tiện ích để báo cáo việc sử dụng CPU.

  • Sử dụng CPU
  • Cung cấp tổng quan về việc sử dụng từng CPU (CPU SMP)
  • Bao nhiêu CPU đã được sử dụng kể từ lần khởi động lại cuối cùng của bạn
  • Xác định những gì đang tiêu thụ CPU (hoặc các CPU)

Chúng ta có nhiều cách như vậy với sự trợ giúp của mình có thể thấy việc sử dụng CPU trong các tiến trình Linux.

2. Lệnh Top (Bảng tiến trình hoặc TOP)

Mọi người đều sử dụng lệnh top để giám sát hệ thống Linux vì nó tốt và nổi tiếng. Bằng lệnh Top, hệ thống cung cấp một cái nhìn tổng quan động về việc sử dụng cpu. Lệnh Top thường tạo ra một danh sách cập nhật các tiến trình lệnh Top. Lệnh này cho chúng ta thấy CPU đang sử dụng bộ nhớ và sức mạnh xử lý như thế nào cũng như cung cấp thông tin về các tiến trình đang chạy khác.

Lệnh trên cùng hiển thị danh sách các tác vụ hiện do nhân Linux quản lý, cũng như bản tóm tắt hệ thống đầy đủ. Lệnh này giám sát việc sử dụng bộ nhớ, thống kê tiến trình và sử dụng CPU.

Phần trên cùng của nó chứa rất nhiều thông tin hữu ích liên quan đến trạng thái tổng thể của hệ thống, bao gồm số liệu thống kê sử dụng cho cả không gian hoán đổi và bộ nhớ, trạng thái CPU, số lượng quá trình, tải trung bình, thời gian hoạt động, v.v.

Mã nguồn [Chọn]
$ top

Danh sách này có thể thay đổi thường xuyên nhưng bạn có thể nhấn nút Q để dừng quá trình làm mới. Chúng ta có thể bắt đầu khối chóp bằng cách sử dụng tham số -i.

Mã nguồn [Chọn]
$ top -i

Nó ẩn tất cả các tiến trình không hoạt động để giúp sắp xếp danh sách dễ dàng hơn. Sử dụng các lệnh sau:

  • M: Sắp xếp danh sách nhiệm vụ theo bộ nhớ mà hệ thống sử dụng
  • P: Sắp xếp các tác vụ dựa trên mức sử dụng CPU
  • N: Sắp xếp nhiệm vụ theo tiến trình
  • T: Sắp xếp danh sách nhiệm vụ theo thời gian chạy

Theo mặc định, lệnh này sắp xếp đầu ra Top với mức sử dụng CPU bằng cách cập nhật dữ liệu lệnh Top sau mỗi 5 giây.

Với mục đích phân tích sâu hơn, tốt nhất là bạn nên có một cái nhìn rõ ràng về đầu ra của lệnh Top sau khi chạy nó ở chế độ hàng loạt. Sử dụng lệnh top, bạn có thể tìm hiểu số liệu thống kê CPU dành cho Linux.

Lệnh Top hoạt động tốt trên nhiều CPU và trong môi trường SMP thực sự, số lượng CPU Top. Để thoát khỏi màn hình lệnh trên cùng, chúng ta phải gõ phím q.

3. Lệnh ps (Trạng thái tiến trình)

Lệnh PS hiển thị thông tin về các tiến trình đang hoạt động trên hệ thống. Lệnh này cung cấp ảnh chụp nhanh các tiến trình hiện tại với thông tin chi tiết như tên lệnh thời gian, ngày bắt đầu tiến trình, mức sử dụng bộ nhớ, mức sử dụng CPU, id người dùng, tên người dùng, v.v.

Mã nguồn [Chọn]
$ ps

Lệnh này cung cấp ảnh chụp nhanh các tiến trình hiện tại với thông tin chi tiết như tên lệnh thời gian, ngày bắt đầu tiến trình, mức sử dụng bộ nhớ, mức sử dụng CPU, id người dùng, tên người dùng, v.v.

4. Lệnh htop.

Lệnh htop cũng tương tự như lệnh top, nhưng một trong những tính năng của nó là nó cho phép chúng ta cuộn theo chiều ngang, dọc và nhiều hơn thế nữa.

Mã nguồn [Chọn]
$ htop

5. Lệnh Sar.

Với lệnh sar, bạn có thể xem hoạt động ngày nay của CPU như một tiện ích để quản lý tài nguyên hệ thống.

Mã nguồn [Chọn]
$ sar
Tùy chọn -u cho phép bạn theo dõi hiệu suất của CPU, nhưng nó không chỉ giới hạn ở việc sử dụng CPU.

Bạn có thể in đầu ra tiêu chuẩn bằng lệnh sar trên các bộ đếm hoạt động tích lũy đã chọn trong Hệ điều hành. Nó đưa ra kết quả dựa trên khoảng thời gian và các thông số tính toán. Ví dụ, cách nhau 2 giây; 5 lần, sử dụng:

Mã nguồn [Chọn]
$ sar -u 2 5

Hiển thị mức sử dụng CPU với tùy chọn –u. Bất cứ khi nào nó hiển thị, nó sẽ làm như vậy sau mỗi năm giây. Bạn có thể hủy bỏ điều này bằng cách nhấn Ctrl-C.

Ở đây, U12 5 hiển thị các giá trị sử dụng CPU sau.

  • % user: Hiển thị mức sử dụng CPU trong khi thực thi ở cấp ứng dụng và người dùng.
  • % nice: Hiển thị mức sử dụng CPU cho người dùng khi ứng dụng đang chạy.
  • % system: Hiển thị mức sử dụng CPU trong khi thực thi ở cấp hệ thống (nhân).
  • % iowait: Số đo này theo dõi lượng thời gian nhàn rỗi mà hệ thống có các yêu cầu I / O đĩa chưa xử lý.
  • % idle: Nó hiển thị phần trăm thời gian khi CPU hoặc CPU không hoạt động và trong thời gian đó hệ thống không có các yêu cầu đĩa I / O chưa xử lý.

Tập tin đầu ra phải được đặt cho nhiều báo cáo và nhiều mẫu để lấy báo cáo từ lệnh Sar. Chạy lệnh này như một tiến trình nền.

Mã nguồn [Chọn]
$ sar -o output.file 12 8 > / dev / null 2 > & 1 &

Ngay cả sau khi đăng xuất, nếu chúng ta muốn xem lại báo cáo, thì tốt hơn chúng ta có thể sử dụng lệnh nohup.

Mã nguồn [Chọn]
$ nohup sar -o output.file 12 8 > / dev / null 2 > & 1 &

Tập tin này chứa các bản sao nhị phân của tất cả dữ liệu có trong tập tin. Sử dụng tùy chọn -f, bạn có thể hiển thị dữ liệu này bằng lệnh sar.

Mã nguồn [Chọn]
$ sar -f data.file
Tìm hiểu xem ai đang tiêu thụ hoặc độc quyền sử dụng CPU. Cuối cùng, mình xác định tiến trình nào đang tiêu thụ và độc quyền CPU. Các lệnh sau đây hiển thị 10 người dùng CPU Top trên hệ thống Linux.



6. Lệnh iostat.

Lệnh này được sử dụng để tìm mức sử dụng trung bình của hệ thống kể từ lần khởi động lại gần đây nhất. Bằng cách sử dụng lệnh iostat, mình báo cáo các phân vùng, thiết bị và dữ liệu của CPU (Bộ xử lý trung tâm).

Mã nguồn [Chọn]
$ iostat

Nếu chúng ta sử dụng lệnh dưới đây, chúng ta sẽ nhận được 3 đầu ra sau mỗi 5 giây.

Mã nguồn [Chọn]
$ iostat -xtc 5 3

7. Lệnh vmstat.

Với vmstat, bạn có thể kiểm tra CPU, đĩa, IO, bộ nhớ, bẫy, tiến trình và hơn thế nữa. Lệnh này giống như thế này.

Mã nguồn [Chọn]
$ vmstat

Tỷ lệ phần trăm thể hiện thời gian dành cho mỗi lõi CPU.

  • us : Thời gian chạy cho mã không phải nhân.
  • sy : Khoảng thời gian thực thi của kernel.
  • id : Số phút nhàn rỗi.
  • wa : Thời gian chờ I / O.
  • st : Thời gian bị đánh cắp từ một máy ảo.

8. Lệnh Nmon.

Nigel Griffiths của IBM đã phát triển công cụ giám sát Nmon. Làm theo các hướng dẫn sau để cài đặt công cụ giám sát Nmon.

Mã nguồn [Chọn]
$ sudo apt-get install nmon

Nhập thông tin sau để cài đặt CentOS:

Mã nguồn [Chọn]
$ sudo yum epel-release
$ sudo yum install nmon

Khởi chạy nmon yêu cầu lệnh sau:

Mã nguồn [Chọn]
$ nmon

Có các phím khác nhau cho các tùy chọn khác nhau như bạn có thể thấy trong hình ảnh dưới đây:



Bạn có thể nhấn nút Q để thoát khỏi công cụ.

9. Lệnh mpstat và các công cụ khác.

Để sử dụng các tính năng này, trước tiên chúng ta phải cài đặt một gói systat. Các công cụ mặc định và công cụ hiệu suất hệ thống như RHEL / Red Hat Linux được bao gồm trong gói này dành cho Linux. mình có thể cài đặt nó trên Ubuntu hoặc Debian bằng lệnh sau.

Mã nguồn [Chọn]
$ sudo apt-get install sysstat

Để cài đặt sysstat cho các phiên bản Linux khác nhau, chúng ta phải sử dụng lệnh tùy theo chúng.

Lệnh up2date cho CentOS / RHEL Linux v4.x trở lên

Mã nguồn [Chọn]
$ up2date install sysstat
Lệnh yum cho Oracle / RHEL / CentOS Linux v5.x + hoặc mới hơn

Mã nguồn [Chọn]
$ yum install sysstat
Lệnh dnf cho người dùng Fedora

Mã nguồn [Chọn]
$ dnf install sysstat
Bằng cách sử dụng mpstat, hiển thị việc sử dụng của từng CPU riêng lẻ. Nếu mình sử dụng nhiều hệ thống CPU và SMP, thì mình sử dụng lệnh mpstat để hiển thị việc sử dụng các CPU khác nhau. Lệnh này cung cấp cho chúng ta báo cáo thống kê liên quan đến bộ xử lý.

Mã nguồn [Chọn]
$ mpstat

Quá trình 0 là bộ xử lý khả dụng đầu tiên và mpstat hiển thị hoạt động cho từng bộ xử lý. Lệnh mpstat được sử dụng trên cả máy UP và SMP, nhưng lệnh sau sẽ chỉ in ra mức trung bình toàn cầu của các hoạt động.

  • % usr : Sử dụng CPU ở cấp độ người dùng
  • % nice : sử dụng CPU cho các tiến trình "tốt đẹp"
  • % sys : mức sử dụng CPU trên nhân (cấp hệ thống)
  • % iowait : CPU không hoạt động trong khi quá trình đọc / ghi đĩa xảy ra
  • % irq : mức sử dụng CPU khi phần cứng bị gián đoạn
  • % soft : Xử lý gián đoạn phần mềm với việc sử dụng CPU
  • % steal : việc sử dụng CPU buộc phải đợi một bộ xử lý ảo khác xử lý xong
  • % guest : Mức sử dụng bộ xử lý trong khi bộ xử lý ảo đang chạy
  • % idle : Sử dụng CPU trong thời gian nhàn rỗi (không có tiến trình nào đang chạy và không có đĩa chờ đọc / ghi)

10. Các công cụ GUI để tìm tiến trình sử dụng Hầu hết CPU trong Linux.

Công cụ / lệnh trên rất hữu ích cho các máy chủ từ xa. Chúng ta có thể thử gnome-system-monitor với X GUI cho các hệ thống cục bộ. Nó cho phép mình giám sát và kiểm soát các tiến trình của hệ thống. Thông qua đó, chúng ta có thể kết thúc các quá trình, gửi tín hiệu và truy cập vào bản đồ bộ nhớ.

Mã nguồn [Chọn]
$ gnome-system-monitor

Ngoài ra, gnome-system-monitor cho chúng ta thấy cái nhìn tổng thể về việc sử dụng tài nguyên trên hệ thống của mình, bao gồm cả phân bổ CPU và bộ nhớ.


Trong bài viết này, mình đã cung cấp thông tin về nhiều công cụ dòng lệnh Linux. Thông qua tất cả các lệnh này, chúng ta có thể thấy cách chúng ta có thể tìm ra mức sử dụng tối đa của CPU và ngăn chặn nó. Thông qua đó, chúng ta có thể ngừng sử dụng nó và chuyển sang quá trình xử lý thứ hai của CPU.