2015-11-30 19 views
5

Có cách nào để buộc một quá trình với PID cụ thể, được thực hiện và chỉ chạy trên một trong các cpu s của máy chủ không? Tôi biết rằng có một lệnh như thế nàyGán lõi cpu cho một quy trình - Linux

taskset -cp <Cpu_Number> <Pid> 

nhưng lệnh trên không hoạt động trên hệ thống của tôi. Vì vậy, hãy cho tôi biết nếu có bất kỳ lệnh nào khác.

+1

hệ điều hành máy chủ là gì? Một người dùng phải có 'CAP_SYS_NICE' để thay đổi ái lực CPU của một quá trình. Bất kỳ người dùng nào cũng có thể truy xuất mặt nạ sở thích. – sjsam

+0

Không công bằng khi chạy khỏi câu hỏi mà bạn vừa đăng. Vui lòng chờ nhận xét ngay lập tức. Nhận xét thường hữu ích cho việc giải thích trong câu hỏi của bạn – sjsam

Trả lời

5

Có hai cách để gán lõi/lõi CPU cho một quy trình đang chạy.

phương pháp đầu tiên:

taskset -cp 0,4 9030 

Khá rõ ràng! gán lõi cpu 0 và 4 đến pid 9030.

Second Phương pháp:

taskset -p 0x11 9030 

này là phức tạp hơn một chút. Số thập lục phân sau -p là một bitmask. Một lời giải thích có thể được tìm thấy here, một đoạn trích trong số đó là đưa ra dưới đây:

Các mối quan hệ CPU được biểu diễn dưới dạng một bitmask, với thứ tự thấp nhất chút tương ứng với CPU logic đầu tiên và bit thứ tự cao nhất tương ứng với CPU hợp lý cuối cùng. Không phải tất cả các CPU đều có thể tồn tại trên một hệ thống được đưa ra nhưng một mặt nạ có thể chỉ định nhiều CPU hơn so với hiện tại. A mặt nạ đã truy xuất sẽ chỉ phản ánh các bit tương ứng với CPU trên thực tế trên hệ thống. Nếu mặt nạ không hợp lệ được cung cấp (nghĩa là mặt nạ tương ứng với không có CPU hợp lệ trên hệ thống hiện tại), lỗi được trả về là . Các mặt nạ thường được đưa ra trong hệ thập lục phân.

Vẫn còn nhầm lẫn? Nhìn vào hình ảnh dưới đây:

enter image description here

Tôi đã thêm mã nhị phân tương ứng với số thập lục phân và xử lý được tính từ trái bắt đầu từ số không. Trong ví dụ đầu tiên có một one trong bitmask tương ứng với bộ xử lý thứ zero, do đó bộ vi xử lý sẽ được kích hoạt cho một quá trình. Tất cả các bộ vi xử lý có zero đến vị trí tương ứng của chúng trong bitmap sẽ bị tắt. Trong thực tế, đây là lý do tại sao nó được gọi là mặt nạ.

Có nói tất cả những, sử dụng taskset để thay đổi mối quan hệ vi xử lý đòi hỏi rằng:

Một người sử dụng phải có CAP_SYS_NICE để thay đổi mối quan hệ CPU của một quá trình . Bất kỳ người dùng nào cũng có thể truy xuất mặt nạ sở thích.

Vui lòng kiểm tra Capabalities Man Page.

Bạn có thể quan tâm để xem điều này SO Question đề cập đến CAP_SYS_NICE.

Tài My

  1. Tutorials Point

  2. XModulo

+0

@mahdi: Tôi có thể biết cách bạn sắp xếp nó ra không? – sjsam

+0

Phương pháp thứ hai mà bạn cung cấp, chỉ là một biểu diễn khác của phương pháp đầu tiên? Hoặc phương pháp thứ hai có ảnh hưởng mạnh hơn đến việc gán CPU? – Admia

+0

Nó không có tác động mạnh mẽ hơn tôi tin. Nó chỉ là một biểu diễn khác .. – sjsam

Các vấn đề liên quan