Trên Linux, làm thế nào để biết có bao nhiêu lõi của máy đang hoạt động?


13

Trên Linux, làm thế nào để biết có bao nhiêu lõi của máy đang hoạt động? Tôi giả sử một thử nghiệm cho điều này cũng sẽ làm việc cho Android. Tôi cần phải biết nếu nhiều hơn một lõi đã từng hoạt động. Đã tự hỏi để kiểm tra điều này bằng cách có một quá trình tạo ra nhiều chủ đề. Có thể cho một chủ đề để truy vấn bộ xử lý đó là gì? bằng cách đó, người ta có thể biết liệu nhiều lõi sẽ được sử dụng dưới tải nặng hay không. Không chắc chắn nếu tôi đi đúng hướng.


Bằng cách "hoạt động", tôi giả sử bạn có nghĩa là có bao nhiêu lõi hiện đang được sử dụng? Hay bạn có nghĩa là hệ thống có bao nhiêu lõi?
Mikel

vâng, tôi muốn cho biết có bao nhiêu hiện đang được sử dụng

Câu trả lời:


19

Bạn có thể sử dụng topđể liệt kê việc sử dụng từng lõi. Nhấn 1 nếu cần để tách hàng CPU thành một hàng riêng cho mỗi lõi.

Bạn cũng có thể thêm một cột hiển thị lõi được sử dụng cuối cùng cho mỗi quy trình. Nhấn f để hiển thị danh sách trường, sau đó j để kích hoạt cột "P". Sau đó nhấn phím cách để trở về chế độ xem trực tiếp.


Vì vậy, có lẽ tôi nên viết và chạy một chương trình sinh ra nhiều luồng và sau đó chạy lệnh 'top' trong bảng điều khiển?
likejudo

Tôi nghĩ rằng nên làm việc. Chỉ cần nhấn H khi bạn vào topdanh sách các chủ đề riêng biệt. Hoặc bạn có thể viết một chương trình với một vòng lặp vô hạn và chạy nó rất nhiều lần.
Brian

Nói, tôi viết chương trình để sinh ra 100 chủ đề, mỗi chủ đề thực hiện một số tính toán chuyên sâu, dài. Nếu tôi viết nó bằng Java (Android), có đảm bảo rằng JVM / KVM sẽ chạy các luồng trên các lõi khác nhau và chạy chúng trên tất cả các lõi không?
likejudo

1
Tôi không biết - đó không phải là những gì thí nghiệm của bạn được cho là tìm ra?
Brian

Tôi cần kiểm tra một chương trình nói rằng nó sẽ hạn chế số lượng lõi xử lý đang được sử dụng. Tôi sẽ tìm kiếm thêm một số. cảm ơn!
likejudo

6

pscó một trường được gọi psrđể cho bạn biết bộ xử lý nào đang chạy.

Vì vậy, bạn có thể sử dụng một cái gì đó như:

ps -e -o psr= | sort | uniq | wc -l

Lưu ý rằng chỉ chạy psnhư thế này tất nhiên sẽ làm cho ít nhất một lõi hoạt động.

Có lẽ tốt hơn là chạy này:

tmp=/tmp/ps.$$
ps -e -o psr= > /tmp/ps.$$
sort -u "$tmp" | wc -l
rm "$tmp"

theo cách đó sortwckhông tăng số lượng.


Điều gì sẽ xảy ra nếu hệ thống có 16 lõi và không ai sử dụng một số trong số chúng?

Sau đó, nó in 0 vì không ai trong số họ đang sử dụng. Tôi nghĩ rằng đó là những gì câu hỏi đang yêu cầu.
Mikel

Không thấy bình luận mới cho câu hỏi.

1
Tất nhiên, bằng cách chạy, pschúng tôi đang tạo ra ít nhất 1 lõi hoạt động. ;-)
Mikel

Cảm ơn câu trả lời của bạn. Nhược điểm là tôi cần biết nếu có nhiều hơn một lõi hoạt động. Đã tự hỏi để kiểm tra điều này bằng cách có một quá trình tạo ra nhiều chủ đề. Có thể cho một chủ đề để truy vấn bộ xử lý đó là gì? theo cách đó, người ta có thể biết liệu nhiều lõi sẽ được sử dụng dưới tải nặng hay không. Không chắc chắn nếu tôi đi đúng hướng.

3
htop

Lệnh này hoạt động tốt trong cả ubfox và centos và hiển thị bằng đồ họa có bao nhiêu CPU và chúng được sử dụng như thế nào.

cho centos:

yum install htop

cho Ubuntu:

apt-get install htop

2

Hãy thử như sau:

cat /proc/cpuinfo

Đây là một liên kết đến một ví dụ Java Android.


1
Theo "hoạt động", tôi giả sử Anil có nghĩa là có bao nhiêu lõi hiện đang được sử dụng và bao nhiêu lõi không hoạt động, tức là gần đúng mức độ bận rộn của hệ thống. /proc/cpuinfochỉ cho bạn biết hệ thống có bao nhiêu lõi, và thậm chí bạn sẽ phải làm nhiều hơn là tính cat /proc/cpuinfođến HyperThreading.
Mikel

OK - điều đó không rõ ràng nhưng bạn đã đúng.
Amir Afghani

0

Bạn có thể sử dụng cat / sys / thiết bị / hệ thống / cpu / có thể hoặc cat / sys / thiết bị / hệ thống / cpu / trực tuyến. Có thể chủ yếu là khi bạn đã tách một cpu để chạy một số chương trình cụ thể.

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.