Saya menemukan trik sederhana untuk melakukan apa yang saya butuhkan.
cat /sys/devices/system/cpu/cpu0/topology/thread_siblings_list
Jika angka pertama sama dengan nomor CPU (0 dalam contoh ini) maka itu adalah inti nyata, jika bukan inti hyperthreading.
Contoh inti nyata:
# cat /sys/devices/system/cpu/cpu1/topology/thread_siblings_list
1,13
Contoh inti hyperthreading
# cat /sys/devices/system/cpu/cpu13/topology/thread_siblings_list
1,13
Output dari contoh kedua persis sama dengan yang pertama. Namun kami memeriksa cpu13
, dan angka pertama adalah 1
, jadi CPU 13 ini adalah inti hyperthreading.
Saya terkejut tidak ada yang menyebutkan lscpu
belum. Berikut adalah contoh pada sistem soket tunggal dengan empat inti fisik dan mengaktifkan hyper-threading:
$ lscpu -p
# The following is the parsable format, which can be fed to other
# programs. Each different item in every column has an unique ID
# starting from zero.
# CPU,Core,Socket,Node,,L1d,L1i,L2,L3
0,0,0,0,,0,0,0,0
1,1,0,0,,1,1,1,0
2,2,0,0,,2,2,2,0
3,3,0,0,,3,3,3,0
4,0,0,0,,0,0,0,0
5,1,0,0,,1,1,1,0
6,2,0,0,,2,2,2,0
7,3,0,0,,3,3,3,0
Outputnya menjelaskan bagaimana menginterpretasikan tabel ID; ID CPU logis dengan ID Inti yang sama adalah saudara kandung.
Bagaimana cara memilih nomor port statis untuk aplikasi khusus?
Bagaimana menemukan file teks yang tidak mengandung teks di Linux?