Có cách nào để hạn chế mức tiêu thụ CPU tổng thể không?


23

Máy tính xách tay của tôi (một HP có chip i3) quá nóng như điên mỗi khi tôi chạy một quy trình nặng về tài nguyên (như một trình biên dịch lớn, trích xuất các tarball lớn hoặc ... chơi Flash).

Tôi hiện đang xem xét một số giải pháp làm mát nhưng có ý tưởng hạn chế mức tiêu thụ CPU toàn cầu. Tôi hình dung rằng nếu CPU bị giới hạn, nhiều khả năng nhiệt độ sẽ ngừng tăng một cách điên cuồng và tôi sẵn sàng hy sinh một chút hiệu năng để hoàn thành công việc.

  1. Tôi có sai trong lý luận của tôi?
  2. Làm thế nào tôi có thể tiến hành giới hạn tổng thể sử dụng CPU?

Nếu nó giúp, tôi đang chạy Debian.


Tôi tin rằng bạn có thể làm điều này với các nhóm, để lại đây như một con trỏ thay vì câu trả lời vì tôi không chắc chắn và tôi không chắc chính xác như thế nào ...
derobert

Bạn có thể thử sử dụng cgroups. Đây là vấn đề tương tự: unix.stackexchange.com/questions/14537/NH
Grzegorz Wierzowiecki

Câu trả lời:


10

Tôi không biết rằng việc giới hạn CPU cho toàn bộ hệ thống là điều có thể xảy ra mà không cần hack nhiều, nhưng bạn có thể dễ dàng giới hạn số lượng CPU được sử dụng bởi một quy trình duy nhất bằng cách sử dụng cpulimit

Cách duy nhất tôi có thể nghĩ về việc bạn có thể sử dụng nó một cách hiệu quả là viết một tập lệnh bao bọc (thực sự không thể gọi nó là tập lệnh, nó quá nhỏ) cho các ứng dụng mà bạn biết là tài nguyên. Ví dụ, bạn thấy google-chrome sử dụng rất nhiều CPU, bạn có thể thay thế nhị phân google-chrome trong đường dẫn của mình bằng một cái gì đó như:

#! /bin/bash
cpulimit --limit 70 /usr/bin/google-chrome-bin

Tôi đã không kiểm tra điều này vì vậy hãy mang nó với một hạt muối. Từ trang web của cpulimit, có vẻ như bạn có thể đặt quy tắc cho giới hạn cpu trên các ứng dụng khác nhau. Tôi không chắc chắn, bạn sẽ phải xem.


10

Một lựa chọn khác chưa được đề cập là cpufrequtils, mà tôi đã cài đặt và sử dụng trên máy tính xách tay của mình với Debian 6. Nó cho phép bạn thay đổi thuật toán ( thống đốc , theo cpufrequtilsthuật ngữ) mà kernel sử dụng để tăng tốc độ xung nhịp lên xuống để tải - đặc biệt, userspacethống đốc cho phép bạn khóa tần số theo thứ bạn chọn (tất nhiên CPU cần có khả năng chạy ở tốc độ này).

Ví dụ, tôi đã sử dụng nó để khóa một chiếc Atom ở tốc độ 800 MHz thay vì 1.6GHz. Nó rất dễ sử dụng.


1
Đây phải là câu trả lời được chấp nhận. (Hoặc temp_thrption)
Vajk Hermecz

6

Bạn có thể tự động giới hạn các lõi CPU của mình dựa trên nhiệt độ bằng cách sử dụng tập lệnh temp_thrption . Nó có thể chạy trong nền trong khi bạn tập trung vào những thứ quan trọng hơn. Một ví dụ về cách chạy:

sudo ./temp_throttle.sh 80 # Will limit CPU cores when 80C is reached.

* Khước từ trách nhiệm- Tôi là tác giả và người duy trì temp_thrption *


3

Đi vào bios và ép xung cpu. - Không cần sự thông minh.


Còn đối với các BIOS không hỗ trợ ép xung thì sao?
daboross

1
sử dụng các nhóm, nhưng tôi chưa thấy một bios nào có thể thay đổi cài đặt tần số bao giờ.
Sirex

Máy tính xách tay m14x r1 (được xây dựng khá tệ) của tôi (không được xây dựng khá tệ) không có cài đặt như vậy, không có gì nhiều để thay đổi trong bios ngoài thứ tự khởi động và thời gian hệ thống.
daboross



-2

Bạn có thể sử dụng reniceđể thay đổi mức độ ưu tiên của quy trình theo quy trình hoặc id nhóm. Từ các ví dụ cho renice:

  1. Điều chỉnh giá trị đẹp để ID quá trình 987 và 32 có giá trị đẹp thấp hơn:

    renice -n 5 -p 987 32

  2. Điều chỉnh giá trị đẹp để ID nhóm 324 và 76 sẽ có giá trị cao hơn, nếu người dùng có các đặc quyền phù hợp để làm như vậy:

    renice -n -4 -g 324 76

  3. Điều chỉnh giá trị đẹp để ID người dùng số 8 và sas người dùng sẽ có giá trị đẹp thấp hơn: renice -n 4 -u 8 sas


4
Chỉ có một lưu ý bổ sung cho câu trả lời: renice, công cụ đẹp hoặc tương tự khác sẽ không ảnh hưởng đến nhiệt độ của CPU, quá trình có vấn đề sẽ tiếp tục ăn các chu kỳ CPU.
Rufo El Magufo

2
Đẹp và đổi mới sẽ không giới hạn mức tiêu thụ CPU. Họ chỉ đơn giản là đặt ưu tiên. Nếu không có gì khác đang chạy cùng một lúc, quá trình vẫn sẽ tiêu thụ tất cả sức mạnh xử lý.
rahmu
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.