Computer >> Máy Tính >  >> Hệ thống >> Linux

Cách chỉ định lõi CPU với Taskset trong Linux

Cách chỉ định lõi CPU với Taskset trong Linux

Xử lý đa lõi có thể có những lợi ích và hạn chế, và đôi khi bạn cần chỉ định thủ công các lõi CPU cho các chương trình (hay còn gọi là “mối quan hệ với CPU”) để đạt được hiệu suất tốt nhất. Trong Linux, công cụ chính là tập tác vụ. Điều đó nghe có vẻ đáng sợ, nhưng chúng tôi sẽ chia nhỏ thành các bước đơn giản để đơn giản hóa quy trình.

Kiến thức cơ bản về bộ công việc

Việc sử dụng bộ tác vụ có thể được chia thành hai phần:mối quan hệ của CPU với các chương trình sẽ được khởi chạy và với các chương trình đã chạy. Việc khởi chạy chương trình dễ dàng hơn trong cả hai, vì vậy chúng ta sẽ bắt đầu từ đó. Lệnh khởi chạy có dạng như sau:

ứng dụng
taskset -c cpu-core-number(s) application

Trước khi nhập số lõi CPU bạn muốn gán, đừng quên rằng lược đồ đánh số Unix thường bắt đầu từ 0, vì vậy lõi đầu tiên của bạn sẽ là 0, lõi thứ hai là 1, v.v. Do đó, máy lõi kép sẽ có lõi 0 và 1, còn máy lõi tứ sẽ có lõi 0, 1, 2 và 3.

Giả sử bạn muốn chạy Audacity trên hệ thống lõi kép và bạn muốn nó chạy trên lõi thứ hai của mình. Lệnh đó sẽ là:

taskset -c 1 audacity

Sử dụng nhiều lõi

Trên một trong các máy của chúng tôi, Chrome đôi khi sẽ giảm khung hình khi phát trực tuyến video nhưng sẽ tự hoạt động khi được gán cho hai lõi. Nếu bạn muốn thử điều tương tự trên hệ thống lõi tứ và muốn gán Chrome cho lõi ba và bốn, lệnh sẽ là:

taskset -c 2,3 google-chrome

Bạn không phải chỉ định sở thích CPU cho các lõi tuần tự - bạn có thể chọn ngẫu nhiên bất kỳ (các) lõi nào. Giả sử bạn có một máy sáu lõi và muốn sử dụng Chrome trên lõi hai và sáu. Bạn sẽ nhập lệnh:

taskset -c 1,5 google-chrome

Bạn cũng có thể sử dụng dấu gạch ngang để trải rộng một ứng dụng qua một số lõi. Ví dụ:nhiều chương trình cũ hơn hoặc các chức năng hệ thống sẽ mặc định trên lõi đầu tiên của bạn. Điều gì sẽ xảy ra nếu bạn muốn để lõi đầu tiên càng rảnh càng tốt trong khi trải rộng một ứng dụng lớn trên tất cả các lõi khác của mình?

Giả sử bạn có một hệ thống tám lõi và muốn chạy Steam từ lõi thứ hai đến lõi thứ tám. Lệnh đó sẽ là:

taskset -c 1-7 steam

Thay đổi sở thích cho một chương trình đã ra mắt

Taskset không chỉ giới hạn trong việc khởi chạy ứng dụng. Bạn cũng có thể thay đổi sở thích của CPU cho một chương trình đang chạy. Tuy nhiên, trước khi bạn có thể thay đổi sở thích của ứng dụng, trước tiên bạn cần biết ID quy trình của ứng dụng đó (gọi tắt là PID).

Để tìm ra PID của ứng dụng, bạn có thể thử sử dụng màn hình hệ thống của máy tính để bàn, nhưng cách nhanh nhất chỉ là sử dụng top . Không có gì ngạc nhiên khi nó sử dụng lệnh:

top

Tên của tất cả các lệnh đang chạy nằm ở phía bên phải của màn hình. Các ID quy trình tương ứng nằm ở bên trái.

Cách chỉ định lõi CPU với Taskset trong Linux

Viết ra PID của bạn vì bạn sẽ sử dụng nó trong giây lát. Đối với ví dụ này, chúng tôi sẽ sử dụng VLC, đang phát video Matroska độ nét cao trên PC cũ hơn có sáu lõi. Chúng tôi đang thử nghiệm với các sở thích CPU khác nhau để nâng cao hiệu suất tốt nhất từ ​​VLC.

Để thay đổi mối quan hệ của một quy trình hiện có, cú pháp trông giống như sau:

taskset -cp core-numbers PID

Nếu bạn có thể thấy ảnh chụp màn hình của chúng tôi ở trên, thì ID quy trình của VLC là 20485. Chúng tôi sẽ thử chạy VLC trên lõi thứ tư, thứ năm và thứ sáu, theo đánh số Unix sẽ là 3-5. Vì vậy, sau tất cả những điều đó, lệnh sẽ là:

taskset -cp 3-5 20485

Nhưng nếu bạn muốn kiểm tra mối quan hệ hiện có trước khi thay đổi nó thì sao? Vì vậy, đừng nhập bất kỳ con số cốt lõi nào và bộ nhiệm vụ sẽ cho bạn biết cách chỉ định mối quan hệ. Vì vậy, nếu chúng ta thay đổi lệnh cuối cùng thành:

taskset -cp 20485

nó cho chúng ta thấy rằng VLC trải rộng trên tất cả các lõi.

Cách chỉ định lõi CPU với Taskset trong Linux

Hãy thử lại điều đó với một chương trình khác. Giả sử chúng tôi chạy một Matroska lớn với SMPlayer để thay thế và SMPlayer đã được khởi chạy. Top cho biết PID là 16058.

Cách chỉ định lõi CPU với Taskset trong Linux

Nhưng trước tiên chúng ta muốn biết mối quan hệ hiện có của nó. Sử dụng lệnh với -cp chuyển đổi nhưng không có số lõi, chúng tôi có thể thấy mối quan hệ hiện đang trải rộng trên tất cả các lõi.

Cách chỉ định lõi CPU với Taskset trong Linux

Bây giờ chúng ta có thể thử trải rộng SMPlayer trên ba lõi giống như thử nghiệm VLC bằng lệnh:

taskset -cp 3-5 16058

Điều đó thật dễ dàng, phải không? Nếu bạn đang tìm cách kiểm tra điểm chuẩn cho PC của mình, hãy xem hướng dẫn của chúng tôi về 8 công cụ hữu ích để kiểm tra CPU của bạn.