Làm cách nào tôi có thể thiết lập mối quan hệ bộ xử lý của một quy trình trên Linux?


29

Làm cách nào tôi có thể thiết lập mối quan hệ bộ xử lý của một quy trình trên Linux?

Câu trả lời:


24

Tôi đã sử dụng tasket cho việc này. Nếu bạn đã cài đặt tasket, một cái gì đó như:

taskset -c 1,3 -p 45678

sẽ đặt quy trình với id 45678 để có ái lực với cpus 1 và 3.


1
Một chỉnh sửa ẩn danh cho thấy rằng lệnh phải taskset -p -c 1,3 45678hơn là taskset -c 1,3 -p 45678; tức là, đó -c 1,3là một đặc tả mặt nạ và, như vậy, phải được đặt giữa -ppid.
G-Man nói 'Phục hồi Monica'

7

Trong tiến trình, cuộc gọi sẽ là sched_setaffinity(), hoặc cho các công cụ pthreads,pthread_setaffinity_np()

Trên một lưu ý liên quan, nếu bạn lo lắng về mối quan hệ CPU của chương trình của mình, có thể đáng để chú ý đến cách thức phân bổ bộ nhớ. Các hệ thống lớn hơn có bộ nhớ được gắn vào nhiều bộ điều khiển (nghĩa là nhiều ổ cắm CPU, mỗi ổ cắm riêng) sẽ có độ trễ và băng thông thay đổi giữa các cặp bộ nhớ CPU khác nhau. Bạn cũng sẽ muốn xem xét mối quan hệ của NUMA, bằng cách sử dụng numactllệnh hoặc hệ thống gọi mà nó hoạt động. Một chương trình tôi đã làm việc đã cải thiện hiệu suất 10% từ việc này.


3

Bạn cần cài đặt schedutils(tiện ích lập lịch trình Linux). Tôi đã sử dụng nó trên máy tính để bàn Ubuntu của tôi.

Liên kết SF


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.