# [OT] hyper threading i wirtualne maszyny

## amica

witam,

mam typowy kobiecy problem dotyczacy wykrywania konfiguracji sprzetowej kompa:

1. Jak, bedac zwyklym user-em, wykryc ze zostal na danej maszynie uzyty hyper threading ?

Chodzi o wykrycie czy to ht czy to parzysta liczba fizycznych cpu.

Doszlam jedynie do tego ze :

- prockow musi byc parzysta ilosc

- w /proc/cpuinfo musi byc flaga ht

- prawdziwa ilosc cpu pokazuje dmidecode ale potrzebuje roota a dokladniej doscia do /proc/mem

- procinfo jest rozny w zaleznosci od wersji kernela, i nie mozna polegac na obecnosci wpisow jak physical id

2. Jak, bedac zwyklym user-em,wykryc ze dane maszyny wirtualne sa na tej samej maszynie fizycznej?

ps: nie mam fizycznego dostepu do maszyn

z gory dziekuje za pomysly

----------

## koziolek

 *amica wrote:*   

> Jak, bedac zwyklym user-em, wykryc ze zostal na danej maszynie uzyty hyper threading ?

 

Kernel z HT powinien być skonfigurowany z SMP. A konfigurację jądra znaleźć można w (nie zawsze):

/etc/kernels

/proc/config.gz

No i w dmesg coś wyskoczy.

----------

## amica

dmesg informuje o wlaczonym ht ale to slepy trop bo po jakims czasie dzialania komputera nie za wiele sie dowiedziec mozna 

musialabym miec dostep do /var/log/messages

z tego co pamietam /proc/config.gz nie ma w 2.4 jajeczkach

----------

## timor

A CPUID? Nie pamiętam dokładnie ale może tam coś będzie. Można dokompilować do kernela opcję aby był tworzony plik /proc/cpuid.

----------

## Raku

 *amica wrote:*   

> z tego co pamietam /proc/config.gz nie ma w 2.4 jajeczkach

 

jest jeszcze /boot/config

ale to idiotyczny trop, bo ja np. mam kernel z obsługą SMP na zwykłym desktopie bez wieloprocesorowości, wielordzeniowości czy HT.

```
raku@demon:~ $ uname -a

Linux demon 2.6.19-ck #1 SMP PREEMPT Sun Jan 21 15:51:33 GMT 2007 i686 AMD Athlon(tm) XP 1600+ AuthenticAMD GNU/Linux

```

 Po prostu używam kernela dystrybucyjnego z mojej dystrybucji.

@timor: czytaj uważniej: możliwość dokompilowania modułu wymaga dostępu do roota. A tego koleżanka jak widać nie ma.

----------

## pawels

No to ja dodam jeszcze 1? trop

Jeśli kernel był budowany na tej maszynie to może pozostały źródełka w

```
/usr/src/
```

a tam pliczek .config do którego odczytu nie trzeba mieć roota

----------

## amica

To ze jest wkomilowana obsluga SMP nie mowi o tym ze jest HT wlaczony.

Z tego co wiem to jeszcze trzeba bios odpowiedno ustawic.

----------

## Raku

 *pawels wrote:*   

> a tam pliczek .config do którego odczytu nie trzeba mieć roota

 

ja chyba niewyraźnie pisałem, więc powtórzę: to idiotyczny trop.

obsługa SMP i HT w kernelu nie oznacza, że musi on być wspierany przez sprzęt, na którym ten kernel działa.

----------

## timor

 *Raku wrote:*   

> @timor: czytaj uważniej: możliwość dokompilowania modułu wymaga dostępu do roota. A tego koleżanka jak widać nie ma.

 Ale osoba, która kompilowała jajko najwidoczniej miała... Albo skorzystała z gotowca (jak TY). Więc może /proc/cpuid jest i nie trzeba nic kombinować  :Very Happy:  A sprawdzenie tego to chwila.

Inna sprawa, że w tym pliku może nic nie być bo po prostu nie pamiętam co w nim było. Z dawnych lat gdy bawiłem się asm'em pamiętam tylko, że było tam sporo o funkcjach w procku.

Można by też poszukać dokładnej specyfikacji procesowrów intela i na podstawie danych z /proc/cpuinfo zaliczyć go do rodziny z HT lub nie. Lub (u mnie tak jest, ale trzeba by to sprawdzić jeszcze):

```
processor   : 0

vendor_id   : GenuineIntel

cpu family   : 15

model      : 4

model name   : Intel(R) Pentium(R) 4 CPU 3.00GHz

stepping   : 1

cpu MHz      : 3010.967

cache size   : 1024 KB

physical id   : 0

siblings   : 2

core id      : 0

cpu cores   : 1

fdiv_bug   : no

hlt_bug      : no

f00f_bug   : no

coma_bug   : no

fpu      : yes

fpu_exception   : yes

cpuid level   : 5

wp      : yes

flags      : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe constant_tsc pni monitor ds_cpl cid xtpr

bogomips   : 6026.62

processor   : 1

vendor_id   : GenuineIntel

cpu family   : 15

model      : 4

model name   : Intel(R) Pentium(R) 4 CPU 3.00GHz

stepping   : 1

cpu MHz      : 3010.967

cache size   : 1024 KB

physical id   : 0

siblings   : 2

core id      : 0

cpu cores   : 1

fdiv_bug   : no

hlt_bug      : no

f00f_bug   : no

coma_bug   : no

fpu      : yes

fpu_exception   : yes

cpuid level   : 5

wp      : yes

flags      : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe constant_tsc pni monitor ds_cpl cid xtpr

bogomips   : 6021.76
```

Mam HT. Jak widać system widzi to jako dwa procki, ale cpu cores	: 1! Nie wiem na ile to pewne, i nie mam pojęcia jak są widziane core duo.

----------

## szolek

Timor bardzo dobry trop.

U mnie na X2:

```
 $ cat /proc/cpuinfo 

processor       : 0

vendor_id       : AuthenticAMD

cpu family      : 15

model           : 75

model name      : AMD Athlon(tm) 64 X2 Dual Core Processor 4200+

stepping        : 2

cpu MHz         : 1000.000

cache size      : 512 KB

physical id     : 0

siblings        : 2

core id         : 0

cpu cores       : 2

fpu             : yes

fpu_exception   : yes

cpuid level     : 1

wp              : yes

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8_legacy

bogomips        : 2011.45

TLB size        : 1024 4K pages

clflush size    : 64

cache_alignment : 64

address sizes   : 40 bits physical, 48 bits virtual

power management: ts fid vid ttp tm stc

processor       : 1

vendor_id       : AuthenticAMD

cpu family      : 15

model           : 75

model name      : AMD Athlon(tm) 64 X2 Dual Core Processor 4200+

stepping        : 2

cpu MHz         : 1000.000

cache size      : 512 KB

physical id     : 0

siblings        : 2

core id         : 1

cpu cores       : 2

fpu             : yes

fpu_exception   : yes

cpuid level     : 1

wp              : yes

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8_legacy

bogomips        : 2011.45

TLB size        : 1024 4K pages

clflush size    : 64

cache_alignment : 64

address sizes   : 40 bits physical, 48 bits virtual

power management: ts fid vid ttp tm stc

```

----------

## milu

Core Duo:

```
processor   : 0

vendor_id   : GenuineIntel

cpu family   : 6

model      : 14

model name   : Genuine Intel(R) CPU           T2300  @ 1.66GHz

stepping   : 8

cpu MHz      : 1667.000

cache size   : 2048 KB

physical id   : 0

siblings   : 2

core id      : 0

cpu cores   : 2

fdiv_bug   : no

hlt_bug      : no

f00f_bug   : no

coma_bug   : no

fpu      : yes

fpu_exception   : yes

cpuid level   : 10

wp      : yes

flags      : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc pni monitor vmx est tm2 xtpr

bogomips   : 3341.81

processor   : 1

vendor_id   : GenuineIntel

cpu family   : 6

model      : 14

model name   : Genuine Intel(R) CPU           T2300  @ 1.66GHz

stepping   : 8

cpu MHz      : 1667.000

cache size   : 2048 KB

physical id   : 0

siblings   : 2

core id      : 1

cpu cores   : 2

fdiv_bug   : no

hlt_bug      : no

f00f_bug   : no

coma_bug   : no

fpu      : yes

fpu_exception   : yes

cpuid level   : 10

wp      : yes

flags      : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc pni monitor vmx est tm2 xtpr

bogomips   : 3333.59

```

----------

## timor

Wygląda na to, że znalazło sie proste rozwiązanie  :Smile:  A jak jeszcze poszperasz za dokładniejszą specyfikacją to będziesz w stanie wyciągnąć dużo więcej  :Smile: 

----------

## amica

przyklad ktory udowadnia ze jednak nei do konca

```
processor       : 0

vendor_id       : GenuineIntel

cpu family      : 15

model           : 4

model name      : Intel(R) Pentium(R) 4 CPU 3.00GHz

stepping        : 1

cpu MHz         : 3000.596

cache size      : 1024 KB

fdiv_bug        : no

hlt_bug         : no

f00f_bug        : no

coma_bug        : no

fpu             : yes

fpu_exception   : yes

cpuid level     : 5

wp              : yes

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc pni monitor ds_cpl cid xtpr

bogomips        : 6007.83

processor       : 1

vendor_id       : GenuineIntel

cpu family      : 15

model           : 4

model name      : Intel(R) Pentium(R) 4 CPU 3.00GHz

stepping        : 1

cpu MHz         : 3000.596

cache size      : 1024 KB

fdiv_bug        : no

hlt_bug         : no

f00f_bug        : no

coma_bug        : no

fpu             : yes

fpu_exception   : yes

cpuid level     : 5

wp              : yes

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc pni monitor ds_cpl cid xtpr

bogomips        : 6000.70
```

----------

## timor

 *amica wrote:*   

> przyklad ktory udowadnia ze jednak nei do konca...

 Jaki masz procesor, jaką wersję kernela?

----------

## szolek

Tak przy okazji ht w flagach procesora to nie jest czasem hyper transport?

----------

## timor

 *szolek wrote:*   

> Tak przy okazji ht w flagach procesora to nie jest czasem hyper transport?

 Na pewno nie jest to hyper threading. Sprawdzałem już to na serwerku z p4 2.4 jest ht a nie ma hyper threading'u ;/

----------

## c2p

Flaga HT to nie może być Hyper-Threading  :Wink:  :

```
processor       : 0

vendor_id       : GenuineIntel

cpu family      : 15

model           : 1

model name      : Intel(R) Celeron(R) CPU 1.80GHz

stepping        : 3

cpu MHz         : 1818.038

cache size      : 128 KB

fdiv_bug        : no

hlt_bug         : no

f00f_bug        : no

coma_bug        : no

fpu             : yes

fpu_exception   : yes

cpuid level     : 2

wp              : yes

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm

bogomips        : 3637.51
```

----------

## amica

no ok z ta flaga moglam sie pomylic

do timor:

kernel 2.6.17-10-generic #2 SMP

standardowy w ubuntu (nie moj komp (!) jestem wierna gentoo)

a procesor sie przedstawil w /proc/cpuinfo

ps: moze jakies pomysly co do drugiego zapytanai?

----------

## timor

 *amica wrote:*   

> no ok z ta flaga moglam sie pomylic
> 
> do timor:
> 
> kernel 2.6.17-10-generic #2 SMP
> ...

 

To opcja z liczbą rdzeni prawie na pewno zależy od jajka ;/ Szkoda trop był dobry.

ad.2. To zależy jak są skonfigurowane. Jeżeli mają nadane zewnętrzne ip to może to być ciężkie.

----------

## amica

 *timor wrote:*   

> ad.2. To zależy jak są skonfigurowane. Jeżeli mają nadane zewnętrzne ip to może to być ciężkie.

 

dlatego sie was radze, juz sporo nad tym myslalam ale nic mi nie przychodzi do glowy madrego

----------

## koziolek

A propos wykrycia wieloprocesorowości (w tym HT) - można uruchomić takiego top'a przy większym obciążeniu systemu (ewentualnie "postukać" w spację  :Smile:  ). Jeśli łączne użycie procesora przez kilka procesów będzie >100%, to jest tu > niż 1 CPU.

Dalej idąc tym tropem - ps aux. Jeśli:

```
ps aux | grep ksoftirqd

# wskaże więcej niż 1 proces (pojawi się wtedy też przyrostek /NR_CPU)

# i/lub

ps aux | grep migration

# wskaże jakikolwiek
```

To też jest kilka CPU. Nie posiadam niestety bezpośredniego dostępu do maszyny wieloprocesorowej czy kilkurdzeniowej na Linuksie, by odróżnić ją od maszyny z HT.

Patrz też: man ksoftirqd

----------

