Tôi có thể chạy nhiều lõi ở tốc độ xung nhịp khác nhau không?


7

Tôi thấy các lõi trên máy Intel i5 mà tôi đang xem chỉ có thể chạy ở cùng tốc độ đồng hồ: /sys/devices/system/cpu/cpu1/cpufreq/related_cpusliệt kê tất cả các CPU. Cài đặt tốc độ đồng hồ của cpu1 sẽ thay đổi cpu0, như mong đợi.

Giả sử máy AMD A6-4400M tôi đang chạy sẽ có thể chạy từng lõi ở tốc độ xung nhịp khác nhau: /sys/devices/system/cpu/cpu1/cpufreq/related_cpuchỉ liệt kê cpu1. Khi tôi đặt tốc độ xung nhịp của cpu1 bằng cách sử dụng bộ điều chỉnh hiệu suất và lặp lại 1400000 đến scaling_max_freq, tốc độ xung nhịp của cpu0 vẫn ở mức 2700000 như mong đợi. Scaling_cur_freq của Cpu1 đọc 1400000 như mong đợi.

Tuy nhiên, cpu1 cpuinfo_cur_freqđọc 2700000. Từ điểm chuẩn, có vẻ như CPU1 vẫn đang chạy ở tốc độ 2,7 GHz. Tôi đang thiếu một cái gì đó, hoặc là một cái gì đó bị hỏng?

Tôi đang chạy Linux 2.6.35 và chuyển qua idle=mwaitdòng lệnh kernel.

Câu trả lời:


4

Đây chưa phải là một câu trả lời chắc chắn. Thay vào đó, đó là một tập hợp các đề xuất quá dài để phù hợp với các bình luận.

Tôi e rằng bạn có thể hiểu sai một chút ý nghĩa của các tham số cpufreq sysfs. Chẳng hạn, trên máy tính xách tay Core Duo của tôi , các related_cputhông số cho cả hai lõi đọc 0 1- mà theo cách giải thích của bạn, có nghĩa là các lõi không thể chuyển đổi tần số một cách độc lập. Nhưng đó không phải là trường hợp - tôi có thể đặt từng tần số theo ý muốn. Ngược lại, affected_cpustham số cho mỗi lõi chỉ liệt kê số CPU tương ứng.

Bạn có thể muốn xem xét tài liệu hạt nhân cho cpu-freq để có được một sự hiểu biết tốt hơn về các thông số như affected_cpus, related_cpus, scaling_*cpuinfo_*. Các tài liệu thường được phân phối với các gói nguồn kernel. Cụ thể, tôi khuyên bạn nên đọc <kernel-sources-dir>/Documentation/cpu-freq/user-guide.txt, nơi <kernel-sources-dir>thường đại diện cho /usr/src/linuxhoặc /usr/src/linux-<kernel-version>. (Tuy nhiên, khi tôi lướt qua tài liệu này ngay bây giờ, tôi thú nhận rằng tôi không nắm bắt được một số sắc thái liên quan đến tần số. Để hiểu đầy đủ những điều này, trước tiên người ta có thể cần phải hiểu rõ về kiến ​​trúc CPU.)

Quay lại câu hỏi của bạn. Và thêm một trường hợp thử nghiệm nữa: khi tôi thay đổi giá trị của scaling_max_freq(với một trong hai userspacehoặc performancethống đốc đang được sử dụng), đồng hồ của lõi sẽ tự động chuyển sang mức tối đa mới đó. Các hành vi khác nhau mà bạn quan sát có thể là bất kỳ:

  • cụ thể để triển khai phần cứng các cơ chế mở rộng tần số trên CPU của bạn,
  • do sự khác biệt giữa cpufreqmô-đun chuẩn và phc-inteltôi đang sử dụng,
  • hành vi bình thường (gọi đó là lỗi hoặc tính năng nếu bạn muốn) của cpufreqmô-đun, đã thay đổi tại một số điểm kể từ 2.6.35(phiên bản kernel hiện tại của tôi là 3.6.2),
  • kết quả của một lỗi trong cpufreqviệc triển khai cho CPU của bạn (hoặc toàn bộ gia đình),
  • cụ thể để thực hiện các performancethống đốc CPU như 2.6.35.

Một số điều bạn có thể làm để đẩy cuộc điều tra của mình đi xa hơn:

  • đọc user-guide.txtvà mân mê nhiều hơn với các cpufreqthông số khác ,
  • lặp lại các bài kiểm tra trong khi chạy kernel mới hơn - cách dễ nhất là khởi động liveCD / DVD / USB.

Nếu bạn tiếp tục gặp phải hành vi không mong muốn và có thêm lý do để tin rằng đó là do lỗi (chắc chắn phải kiểm tra với phiên bản kernel nhỏ mới nhất), hãy tiếp tục và báo cáo điều này trên kernel.org bugzilla .

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.