Linux'ta, makinenin kaç çekirdeğinin aktif olduğunu nasıl söyleyebilirim?


14

Linux'ta, makinenin kaç çekirdeğinin aktif olduğunu nasıl söyleyebilirim? Bunun için bir testin Android için de işe yarayacağını düşünüyorum. Birden fazla çekirdeğin aktif olup olmadığını bilmem gerekiyor. Bir işlemi birçok iş parçacığı oluşturarak test etmek merak ediyordum. Bir iş parçacığının hangi işlemcide olduğunu sorgulaması mümkün müdür? Bu şekilde, ağır yük altında birden fazla çekirdek kullanıp kullanılmayacağı söylenebilir. Doğru yolda olup olmadığımdan emin değilim.


1
"Aktif" ile, şu anda kaç tane çekirdek kullanıldığını kastettiğinizi varsayalım. Yoksa sistemin kaç tane çekirdeği olduğunu mu demek istediniz?
Mikel

evet, şu anda kaç kişinin kullanıldığını söylemek istiyorum

Yanıtlar:


19

topHer bir çekirdeğin kullanımını listelemek için kullanabilirsiniz . CPU satırını her çekirdek için ayrı bir satıra bölmek gerekirse 1'e basın.

Her işlem için en son kullanılan çekirdeği gösteren bir sütun da ekleyebilirsiniz. Alan listesini getirmek için f tuşuna basın, sonra "P" sütununu etkinleştirmek için j tuşuna basın. Ardından canlı izlemeye geri dönmek için boşluk tuşuna basın.


Bu yüzden belki de birçok iş parçacığını ortaya çıkaran ve daha sonra konsoldaki 'top' komutunu çalıştıran bir program yazmalı ve çalıştırmalıyım?
likejudo

Bunun işe yarayacağını düşünüyorum. topKonuları ayrı olarak listelemek için H tuşuna basmanız yeterlidir . Veya sonsuz bir döngü ile bir program yazabilir ve bir sürü kez çalıştırabilirsiniz.
Brian

Diyelim ki, her biri uzun, yoğun bir hesaplama yapan 100 iş parçacığı oluşturmak için programı yazıyorum. Java'da (Android) yazarsam, JVM / KVM'nin konuları farklı çekirdeklerde çalıştıracağı ve tüm çekirdeklerde çalıştıracağının bir garantisi var mı?
likejudo

1
Bilmiyorum - denemenizin anlaması gereken bu değil mi?
Brian

Kullanılan işlemci çekirdeği sayısını kısıtlayacağını söyleyen bir programı test etmem gerekiyor. Biraz daha arayacağım. Teşekkürler!
likejudo

6

pspsrsize bir işin hangi işlemcide çalıştığını söylemek için çağrılan bir alan içerir .

Yani şöyle bir şey kullanabilirsiniz:

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

Sadece psböyle çalışmanın elbette en az bir çekirdeği aktif hale getireceğini unutmayın.

Muhtemelen daha iyisi bunu çalıştırmaktır:

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

bu şekilde sortve wcsayısını artırmayın.


Sistemin 16 çekirdeği varsa ve kimse bunlardan bazılarını kullanmıyorsa ne olur?

Sonra 0 yazdı çünkü hiçbiri kullanılmıyor. Sorunun istediğini düşünüyorum.
Mikel

Soru için yeni yorum görmedim.

1
Tabii ki, koşarak psen az 1 çekirdeği aktif hale getiriyoruz. ;-)
Mikel

Cevabınız için teşekkürler. Dezavantajı, birden fazla çekirdeğin aktif olup olmadığını bilmem gerekiyor. Bir işlemi birçok iş parçacığı oluşturarak test etmek merak ediyordum. Bir iş parçacığının hangi işlemcide olduğunu sorgulaması mümkün müdür ? Bu şekilde, ağır yük altında birden fazla çekirdek kullanıp kullanılmayacağı söylenebilir. Doğru yolda olup olmadığımdan emin değilim.

3
htop

Bu komut hem ubuntu hem de centos'ta iyi çalışır ve grafiksel olarak kaç CPU ve bunların kullanıldığını gösterir.

centos için:

yum install htop

ubuntu için:

apt-get install htop

2

Takip etmeyi dene:

cat /proc/cpuinfo

İşte bir Android Java örneğine bir bağlantı .


1
"Aktif" olarak, Anil'un şu anda kaç tane çekirdek kullanıldığını ve ne kadarının boşta olduğunu, yani sistemin ne kadar meşgul olduğunun yaklaşık olduğunu ifade ettiğini varsayıyorum. /proc/cpuinfosadece sistemin kaç tane çekirdeğe sahip olduğunu söyler ve hatta cat /proc/cpuinfoHyperThreading'i hesaba katmaktan daha fazlasını yapmanız gerekir .
Mikel

Tamam - bu belli değildi ama haklısın.
Amir Afghani

0

Cat / sys / device / system / cpu / mümkün veya cat / sys / device / system / cpu / online kullanabilirsiniz. Olası temelde belirli bir programı çalıştırmak için bir cpu izole ederseniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.