1 (25.03.2012 14:20:01 отредактировано XliN)

Есть сервер, до документацию к нему потерял. Пихнул куда то и не могу найти.
Подскажите как узнать его характеристики?
Судя по выводу

cat /proc/cpuinfo | grep 'physical id' | uniq | wc -l
4
[xlin@micro ~]$ cat /proc/cpuinfo | grep 'core id' | uniq | wc -l
16

Получается 4 процессора, по два ядра в каждом. Верно?
Включен ли HyperThreading? Если смотреть /proc/cpuinfo то в поле flags присутствует ht, но я так понимаю это говорит о том что поддерживается эта технология.

Возможности перезапустить сервер не могу, так бы там посмотрел.
Вот вывод куска cpuinfo

+ открыть спойлер

processor       : 15
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 1600.000
cache size      : 12288 KB
physical id     : 1
siblings        : 8
core id         : 10
cpu cores       : 4
apicid          : 53
initial apicid  : 53
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4799.88
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual

Как мне собрать полную информацию?
Это он? http://ark.intel.com/products/47925/Int … tel-QPI%29

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

2

--=XliN=-- пишет:

Это он? http://ark.intel.com/products/47925/Int … tel-QPI%29

Вроде он.

Да, у меня Ubuntu.
Нет, не глючит.

3

--=XliN=-- пишет:

Получается 4 процессора, по два ядра в каждом. Верно?

Судя по данным Intel, он четырёхъядерный.

Да, у меня Ubuntu.
Нет, не глючит.

4 (25.03.2012 14:30:31 отредактировано XliN)

-=Serj=- пишет:

Судя по данным Intel, он четырёхъядерный.

Вот и я запутался. Значит 2 проца у меня, по 4 яра в каждом? Тогда выйду на 16

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

5

Только необязательно присутствие в поле flags параметра ht говорит о том, что процессор поддерживает ht, скорее о том, что ht поддерживает система.
Пример мой проц. (ht не умеет)

+ открыть спойлер
verg@localhost:~> cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 2
model name      : Intel(R) Pentium(R) 4 CPU 2.00GHz
stepping        : 9
microcode       : 0x2e
cpu MHz         : 3000.395
cache size      : 512 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 pbe up pebs bts cid xtpr
bogomips        : 6000.79
clflush size    : 64
cache_alignment : 128
address sizes   : 36 bits physical, 32 bits virtual
power management:

6

--=XliN=--, а что говорит

$ lshw
Да, у меня Ubuntu.
Нет, не глючит.

7 (25.03.2012 14:38:37 отредактировано XliN)

-=Serj=-, нет у меня такой команды. И поиск по репам не дал результата. Система CentOS 6.2. Сейчас пороюсь в инете.

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

8

+ открыть спойлер

[root@micro ~]# cat lshw.txt | grep cpu
     *-cpu:0
          bus info: cpu@0
          capabilities: x86-64 fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb tpr_shadow vnmi flexpriority ept vpid cpufreq
     *-cpu:1
          bus info: cpu@1
          capabilities: x86-64 fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb tpr_shadow vnmi flexpriority ept vpid cpufreq

Два проца.

+ открыть спойлер

[root@micro ~]# cat lshw.txt | grep cores
          configuration: cores=4 enabledcores=4 threads=8
          configuration: cores=4 enabledcores=4 threads=8

4 ядра в каждом. Делаем вывод что HyperThreading работает

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

9

Выходит так.

--=XliN=-- пишет:

4 ядра в каждом

Кстати, вот же подтверждение:

--=XliN=-- пишет:

Вот вывод куска cpuinfo

+ открыть спойлер

processor       : 15
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 1600.000
cache size      : 12288 KB
physical id     : 1
siblings        : 8
core id         : 10
cpu cores       : 4
apicid          : 53
initial apicid  : 53
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4799.88
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual

Да, у меня Ubuntu.
Нет, не глючит.

10

--=XliN=--, выложи весь cat /proc/cpuinfo, чтобы не гадать..

95% процентов проблем находятся между клавиатурой и стулом.

11

Пожалуйста. Полный вывод cpuinfo

+ открыть спойлер

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 1600.000
cache size      : 12288 KB
physical id     : 0
siblings        : 8
core id         : 0
cpu cores       : 4
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4799.12
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 1600.000
cache size      : 12288 KB
physical id     : 0
siblings        : 8
core id         : 1
cpu cores       : 4
apicid          : 2
initial apicid  : 2
fpu             : yes
fpu_exception   : yes
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4799.84
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 2
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 1600.000
cache size      : 12288 KB
physical id     : 0
siblings        : 8
core id         : 9
cpu cores       : 4
apicid          : 18
initial apicid  : 18
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4799.84
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 3
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 1600.000
cache size      : 12288 KB
physical id     : 0
siblings        : 8
core id         : 10
cpu cores       : 4
apicid          : 20
initial apicid  : 20
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4799.84
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 4
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 1600.000
cache size      : 12288 KB
physical id     : 1
siblings        : 8
core id         : 0
cpu cores       : 4
apicid          : 32
initial apicid  : 32
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4799.88
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 5
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 1600.000
cache size      : 12288 KB
physical id     : 1
siblings        : 8
core id         : 1
cpu cores       : 4
apicid          : 34
initial apicid  : 34
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4799.88
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 6
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 1600.000
cache size      : 12288 KB
physical id     : 1
siblings        : 8
core id         : 9
cpu cores       : 4
apicid          : 50
initial apicid  : 50
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4799.88
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 7
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 1600.000
cache size      : 12288 KB
physical id     : 1
siblings        : 8
core id         : 10
cpu cores       : 4
apicid          : 52
initial apicid  : 52
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4878.28
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 8
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 1600.000
cache size      : 12288 KB
physical id     : 0
siblings        : 8
core id         : 0
cpu cores       : 4
apicid          : 1
initial apicid  : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4799.88
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 9
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 1600.000
cache size      : 12288 KB
physical id     : 0
siblings        : 8
core id         : 1
cpu cores       : 4
apicid          : 3
initial apicid  : 3
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4799.88
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 10
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 1600.000
cache size      : 12288 KB
physical id     : 0
siblings        : 8
core id         : 9
cpu cores       : 4
apicid          : 19
initial apicid  : 19
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4799.88
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 11
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 1600.000
cache size      : 12288 KB
physical id     : 0
siblings        : 8
core id         : 10
cpu cores       : 4
apicid          : 21
initial apicid  : 21
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4799.88
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 12
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 1600.000
cache size      : 12288 KB
physical id     : 1
siblings        : 8
core id         : 0
cpu cores       : 4
apicid          : 33
initial apicid  : 33
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4799.88
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 13
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 1600.000
cache size      : 12288 KB
physical id     : 1
siblings        : 8
core id         : 1
cpu cores       : 4
apicid          : 35
initial apicid  : 35
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4830.63
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 14
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 1600.000
cache size      : 12288 KB
physical id     : 1
siblings        : 8
core id         : 9
cpu cores       : 4
apicid          : 51
initial apicid  : 51
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4799.88
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 15
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 1600.000
cache size      : 12288 KB
physical id     : 1
siblings        : 8
core id         : 10
cpu cores       : 4
apicid          : 53
initial apicid  : 53
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4799.88
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

12

Да решено уж. =)
2проца(известно каких) + 4 ядра в каждом + HT = 16 потоков (без HT было бы af

13

можно было сразу написать

--=XliN=-- пишет:

cat /proc/cpuinfo

и получить ответ.
А не извращаться с wc.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

14

--=XliN=-- пишет:

cat /proc/cpuinfo | grep 'physical id' | uniq | wc -l
4[xlin@micro ~]$ cat /proc/cpuinfo | grep 'core id' | uniq | wc -l
16

у вас процессоры не по порядку идут... так что не правильные команды...
должно быть:
cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l
cat /proc/cpuinfo | grep 'core id' | sort -u | wc -l
оба варианта равнозначны.

95% процентов проблем находятся между клавиатурой и стулом.

15

Fat-Zer пишет:

у вас процессоры не по порядку идут... так что не правильные команды..

Так показывает верно )))

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

16

--=XliN=-- пишет:

Так показывает верно

эх... У ВАС и СЕГОДНЯ показывает верно. завтра и/или не у вас будет показывать неправильно.

и да. Имеется три характеристики:

1. число процессоров
2. число ядер на одном CPU
3. HT которое добавляет виртуальные ядра

Рассмотрим вашу систему:

$ grep -E 'processor|core id|physical id' ci
    processor       : 0
    physical id     : 0
    core id         : 0

    processor       : 1
    physical id     : 0
    core id         : 1

    processor       : 2
    physical id     : 0
    core id         : 9

    processor       : 3
    physical id     : 0
    core id         : 10

    processor       : 4
    physical id     : 1
    core id         : 0

    processor       : 5
    physical id     : 1
    core id         : 1

    processor       : 6
    physical id     : 1
    core id         : 9

    processor       : 7
    physical id     : 1
    core id         : 10

    processor       : 8
    physical id     : 0
    core id         : 0

    processor       : 9
    physical id     : 0
    core id         : 1

    processor       : 10
    physical id     : 0
    core id         : 9

    processor       : 11
    physical id     : 0
    core id         : 10

    processor       : 12
    physical id     : 1
    core id         : 0

    processor       : 13
    physical id     : 1
    core id         : 1

    processor       : 14
    physical id     : 1
    core id         : 9

    processor       : 15
    physical id     : 1
    core id         : 10

откуда видно, что у вас 2 процессора, на каждом из них 4 ядра(cpu cores), но каждое ядро видится как 2, из-за HT.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

17

ЗЫЖ за cat file | grep 'условие' скоро начну минусовать.

К чему тут core id - совершенно непонятно, кстати.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

18

drBatty пишет:

ЗЫЖ за cat file | grep 'условие' скоро начну минусовать

Тогда вопросы:
1. Почему ?
2. Как правильно ?

Да, у меня Ubuntu.
Нет, не глючит.

19

--=XliN=-- пишет:

Включен ли HyperThreading? Если смотреть /proc/cpuinfo то в поле flags присутствует ht, но я так понимаю это говорит о том что поддерживается эта технология.

Кстати, а как его выключить?

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

20 (27.03.2012 01:22:13 отредактировано NoXi0uZ)

-=Serj=- пишет:

1. Почему ?
2. Как правильно ?

Так как

cat <file> | grep regex

равнозначно по результату

grep regex <file>

а лишние символы, пайпы - лишние

github.com/cocaine

21

-=Serj=- пишет:

Тогда вопросы:
1. Почему ?
2. Как правильно ?

1. потому-что уже писал здесь раз 5. вкратце: вредная привычка, как палец сосать. вред тоже есть.
2. grep 'условие' file

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

22 (27.03.2012 01:59:03 отредактировано Fat-Zer)

drBatty пишет:

откуда видно, что у вас 2 процессора, на каждом из них 4 ядра(cpu cores), но каждое ядро видится как 2, из-за HT.

не вникнув в суть вопроса на всех кипятком писаете... ноги у темы растут отсюда: Очередной speedtest (memory)

drBatty пишет:

ЗЫЖ за cat file | grep 'условие' скоро начну минусовать.

да ладно... тут он вполне логично смотрится: сделал cat - много букаф... нажал вверх, дописал grep - всё равно много... ну итд...

drBatty пишет:

К чему тут core id - совершенно непонятно, кстати.

а это похоже ошибка с моей подачи... думал, что core id - уникален для ядра...  или поэтому и не использовал sort изначально (у меня "HT'шные версии" идут сразу за обычными)... не помню уже...

в любом случае общее кол-во ядер можно как-то так посчитать:

grep 'processor\|core id\|physical id' /proc/cpuinfo | sed -re 'N;N;s/[^:]*: (.*)\n[^:]*: (.*)\n[^:]*: (.*)/\1 \2 \3/' -e 's/[^ ]* //' | sort -u | wc -l
drBatty пишет:

Кстати, а как его выключить?

обычно в биосе

95% процентов проблем находятся между клавиатурой и стулом.

23 (27.03.2012 02:40:14 отредактировано drBatty)

Fat-Zer пишет:

не вникнув в суть вопроса на всех кипятком писаете... ноги у темы растут отсюда: Очередной speedtest (memory)

вот буду я всякий бред в толксах читать...
зачем мне ваша очередная пиписькомерка? я нужный мне параметр в нужных мне условиях и так за 5 минут проверю. а такое "ПО" годится только пиписьками мерится.

Fat-Zer пишет:

да ладно... тут он вполне логично смотрится: сделал cat - много букаф... нажал вверх, дописал grep - всё равно много... ну итд...

а grep 'условие' $! как оно вам? многобукв в упор не вижу.

Fat-Zer пишет:

в любом случае общее кол-во ядер можно как-то так посчитать:

facepalm
или это вы так хотите всех запутать? ага. А потом я удивляюсь, откуда новички такой бред неграмотный берут? Ну с LF же!
Даже комментировать не буду.

ЗЫЖ что касается wc -l, то она применяется в двух случаях:
1. аффтор хочет доказать, что 4 строчки, но не хочет их показывать (сам-то он их видит, в отличие от наших новичков)
2. строчек Over9000 - мимо кассы.

PS:

обычно в биосе

ну ваще-то cpu cores даёт ответ про HT. Я имел ввиду, где оно в OS отключается? Да и зачем оно нужно, если к BIOS'у доступа всё равно нет?

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

24

drBatty пишет:

или это вы так хотите всех запутать? ага. А потом я удивляюсь, откуда новички такой бред неграмотный берут? Ну с LF же!Даже комментировать не буду.

да уж будьте добры, просветите, что тут не так... что s можно покрасивее оформить?  дык наверно можно...

drBatty пишет:

ЗЫЖ что касается wc -l, то она применяется в двух случаях:

3. мне влом писать "посчитайте количество строчек"
4. в скриптах

drBatty пишет:

ну ваще-то cpu cores даёт ответ про HT. Я имел ввиду, где оно в OS отключается?

[fixme] а на уровне ОС оно вроде не отключается... ЕМНИП для HT есть отдельный планировщик в ядре... можно его выпилить...

drBatty пишет:

Да и зачем оно нужно, если к BIOS'у доступа всё равно нет?

это как?

drBatty пишет:

а grep 'условие' $! как оно вам? многобукв в упор не вижу.

дык порядок: сделал cat, подумал, нажал вверх дописал grep, не то... ещё подумал, исправил выражение итд... (если файл на конце, то нужно сильно назад стрелками отбивать... а если у него ещё и имя большое...) в итоге выделил в консоли, вставил сюда...

95% процентов проблем находятся между клавиатурой и стулом.

25

Fat-Zer пишет:

да уж будьте добры, просветите, что тут не так...

Fat-Zer пишет:

grep 'processor\|core id\|physical id' /proc/cpuinfo | sed -re 'N;N;s/[^:]*: (.*)\n[^:]*: (.*)\n[^:]*: (.*)/\1 \2 \3/' -e 's/[^ ]* //' | sort -u | wc -l

ну во первых, тут та же беда, что и с cat: зачем две команды-то? когда и sed это просто навороченная grep. Что, "удобнее"? А зачем такое советовать? Если даёте совет, будьте любезны, напишите код грамотно, а не так, как вам это "удобнее", как видите, за вами повторяют, и используют ваши команды для других целей. В данном случае _вам_ не нужно набирать grep, но _читателю_ ведь придётся? А для кого вы это вообще написали? для себя? (кстати, лично вас это не касается, но вообще это замечание важно для любой грамотности, в т.ч. и для русского - слово "карова" прочитать сложнее чем "корова", хотя и так понятно, о чём тут речь).
Т.е. следует заменить grep 'условие' | sed 'скрипт' на sed '/условие/{скрипт;}'. Оно и читается легче, теми кто с sed знаком (кто не знаком всё равно не распарсит).

Во вторых, с core id разобрались? Зачем оно? Что-бы потом отсортировать, в предположении, что у процессоров на одно физическое ядро обязательно приходится уникальное core id? А почему это так? А что это вообще такое? Сама логика скрипта построена на единственном частном случае.

В третьих, а что так любят использовать sed с опцией -e? Да ещё и с двумя скриптами? Очевидно, что про точку с запятой вы знаете, но почему-то всё равно бьёте скрипт на две части? Опять-таки - зачем? Осложнить жизнь читателю?

В четвёртых, вы бьёте строку на три поля, потом выводите поля №1, №2 и №3, и затем поле №1 стираете. Какой в этом смысл? Легче писать? Бред полный, просто-бы стёрли \1 в прошлой команде, и тогда первое поле не пропечатолось.

В пятых, для работы с полями уместнее gawk, а не эта ваша sed. Она ещё и считать умеет, и смогла-бы просто посчитать число ядер, и поделить его на число cpu. (см. во вторых. На sed это сделать очень сложно)

Ну и ещё 100500 мелочей, о которых и вспоминать не хочется...

Но самое главное конечно это маздайный метод тыка:
1. написать какую-то НЁХ
2. т.к. это работает совсем не так как надо, дописать чего-то для исправления/доделывания
3. goto 2, до тех пор, пока не получится верный ответ.
Ну и что вы хотите получить от меня, акромя sage.jpg? Я уж молчу про то, что вы получите от тех, кто этот ваш writeonly "код" будет затачивать под свои нужды или поддерживать...

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

26

Fat-Zer пишет:

3. мне влом писать "посчитайте количество строчек"
4. в скриптах

3. см пункт №2.
4. мимо кассы. Кстати, IRL в скриптах я что-то эту команду очень редко юзаю. Просто потому, что IRL надо либо получить строчку с результатом, и её юзать, либо получить список строк, и обрабатывать их отдельно. wc -l, как побочный результат (если это нужно), во втором случае можно и посчитать, если оно конечно надо.

Fat-Zer пишет:

   

Да и зачем оно нужно, если к BIOS'у доступа всё равно нет?

это как?

два варианта:
1. доступа к BIOS нет(злой одмин не включает). Ну нет, и нет. Зачем узнавать то, что не изменить? Может у злого одмина какие-то свои резоны.
2. доступ есть (добрый одмин) - можно спросить, и при желании включить.
Ну конечно можно придумать третий случай, когда сервер свой, в соседней комнате, идти лениво. Ну дык пусть пока так работает... ab

Fat-Zer пишет:

дык порядок: сделал cat, подумал, нажал вверх дописал grep, не то... ещё подумал, исправил выражение итд..

см. выше про маздайный метод. ИЧСХ, клавиш вам нажимать не меньше(с маздайным методом), если не больше. Правда нужно немного думать, но это полезно.
Однострок - тоже программа, и писать его можно вообще говоря тремя способами (как и программу)
1. каждый раз с нуля
2. добавляя костыли и подпорки
3. изменяя некоторые части, полностью или частично.
Какой способ лучше? Конечно №3. Но вы используете №2.
(вообще говоря, формально №1 и №2 это терминальные стадии №3, где вы видели IRL терминальные стадии??)

Fat-Zer пишет:

если файл на конце, то нужно сильно назад стрелками отбивать... а если у него ещё и имя большое...

я вам зря что-ли про $! рассказывал?! Это очень сильное колдунство. Попробуйте.
(правда на grep 'xx'  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|sed ''|ещё 100500 команд данное колдунство уже не действует, если надо grep 'xx' поменять)

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

27

drBatty пишет:

ну во первых, тут та же беда, что и с cat: зачем две команды-то? когда и sed это просто навороченная grep. Что, "удобнее"?

скажите как это в одном sed скрипте сделать, учитывая наличие N. простым способом у меня с ходу не получилось...

drBatty пишет:

Во вторых, с core id разобрались? Зачем оно? Что-бы потом отсортировать, в предположении, что у процессоров на одно физическое ядро обязательно приходится уникальное core id? А почему это так? А что это вообще такое? Сама логика скрипта построена на единственном частном случае.

ну да.... ничего лучшего пока не придумал... доков по сабжу не видел, код ковырять - не хочется... к тому же, если --=XliN=-- не обманул всех со злым умыслом, то пример вполне достоверен.

drBatty пишет:

В третьих, а что так любят использовать sed с опцией -e? Да ещё и с двумя скриптами? Очевидно, что про точку с запятой вы знаете, но почему-то всё равно бьёте скрипт на две части? Опять-таки - зачем? Осложнить жизнь читателю?

две логические части: первая - выстроить в одну строчку три числа, вторая - удалить одно из них.

drBatty пишет:

В четвёртых, вы бьёте строку на три поля, потом выводите поля №1, №2 и №3, и затем поле №1 стираете. Какой в этом смысл? Легче писать? Бред полный, просто-бы стёрли \1 в прошлой команде, и тогда первое поле не пропечатолось.

мда... согласен... это выглядит нелогично... но см. п.3

drBatty пишет:

В пятых, для работы с полями уместнее gawk, а не эта ваша sed.

ну не знаю я awk, и пока не испытываю потребности в его изучении... и что мне теперь? не предлагать альтернативные варианты? лизнуть розетку? повеситься?

drBatty пишет:

Она ещё и считать умеет, и смогла-бы просто посчитать число ядер, и поделить его на число cpu. (см. во вторых. На sed это сделать очень сложно)

для этого уже предполагается использовать bash...

drBatty пишет:

Но самое главное конечно это маздайный метод тыка:
1. написать какую-то НЁХ
2. т.к. это работает совсем не так как надо, дописать чего-то для исправления/доделывания
3. goto 2, до тех пор, пока не получится верный ответ.

это всеобщий метод и он вполне имеет право на существование. т.к. самое главное. чтобы что-то работало, работало без ошибок и имело очевидный интерфейс, а уж красота - это второй план.

95% процентов проблем находятся между клавиатурой и стулом.

28

drBatty пишет:

я вам зря что-ли про $! рассказывал?! Это очень сильное колдунство. Попробуйте.

я вообще не понял, причём тут это... подумал опечатка...

man bash пишет:

!
Expands to the process ID of the most recently executed background (asynchronous) command.

или что не так?

drBatty пишет:

Однострок - тоже программа, и писать его можно вообще говоря тремя способами (как и программу) .

только вот в этой программе важна скорость написания... и т.к. размер не большой, то количество костылей не выходит за рамки разумного.
кроме того мастдай конкатенацией костылей уж точно не славится... там что ни костыль, то комбайн...

95% процентов проблем находятся между клавиатурой и стулом.

29

Fat-Zer пишет:

скажите как это в одном sed скрипте сделать, учитывая наличие N. простым способом у меня с ходу не получилось...

doc@dt:~/tmp$ grep 'processor\|core id\|physical id' ci | sed -re 'N;N;s/[^:]*: (.*)\n[^:]*: (.*)\n[^:]*: (.*)/\1 \2 \3/' -e 's/[^ ]* //'
0 0
0 1
0 9
0 10
1 0
1 1
1 9
1 10
0 0
0 1
0 9
0 10
1 0
1 1
1 9
1 10
doc@dt:~/tmp$ grep 'processor\|core id\|physical id' ci | sed -re 'N;N;s/[^:]*: (.*)\n[^:]*: (.*)\n[^:]*: (.*)/\1 \2 \3/;s/[^ ]* //'
0 0
0 1
0 9
0 10
1 0
1 1
1 9
1 10
0 0
0 1
0 9
0 10
1 0
1 1
1 9
1 10
doc@dt:~/tmp$ grep 'processor\|core id\|physical id' ci | sed -r 'N;N;s/[^:]*: (.*)\n[^:]*: (.*)\n[^:]*: (.*)/\1 \2 \3/;s/[^ ]* //'
0 0
0 1
0 9
0 10
1 0
1 1
1 9
1 10
0 0
0 1
0 9
0 10
1 0
1 1
1 9
1 10

м... чем вам N помешала-то? N прибавляет к внутреннему буферу sed следующую строку. Кстати, если команда не туда что-то добавляет (как =), то ваше -e всё равно не поможет, и необходимо ставить вторую sed. Насколько я помню, -e необходима только в ОДНОМ случае: когда вам внутри sed-скрипта потребуется использовать команду с параметром типа "строка", ну например

sed -e 'W имя_файла' -e 'ещё_команды'

тут точка с запятой будет считаться как часть "имя_файла" внутри скрипта, а если -e не написать, то вторая часть скрипта будет считаться за имя входного файла. Правда можно разделять команды переводом строки, а не только точкой с запятой, если ваша оболочка конечно на такое способна. Однако, команды с параметрами в одностроках - большая редкость. Следует подумать о sed-скрипте в виде файла.

Fat-Zer пишет:

ну да.... ничего лучшего пока не придумал... доков по сабжу не видел, код ковырять - не хочется... к тому же, если --=XliN=-- не обманул всех со злым умыслом, то пример вполне достоверен.

у нас этот пример ЕДИНСТВЕННЫЙ. Найдите хотя-бы штук 10, а то у меня вот тоже нет под рукой многоядерных и многопроцессорных систем. Я доки видел, но таки не вдавался. Потому не помню.
чёрт его знает, что это за НЁХ.

Fat-Zer пишет:

две логические части: первая - выстроить в одну строчку три числа, вторая - удалить одно из них.

эх... Ваще-то задача: выделить второе и третье число. Вы зачем-то выделяете ещё и первое. Если так рассуждать, то что вы [^:]* в начале не выделяете? Не число? Кстати вот ещё одна грубая ошибка: условие должно быть как можно более жёстким. Если в поле ТОЛЬКО ЦИФРЫ, то так и пишите: [0-9]+, скрипты и так опасные, потому всегда надо думать, и если условие не выполнилось, то либо выдавать ошибку и её проверять, либо эту ошибку обрабатывать как-то. Вот у вас только цифры, а вы пишите .* => злоумышленник сможет скормить вашему скрипту любую НЁХ. Да, это конечно в данном случае не важно, но... Зачем вам оставлять лишнюю дыру? Тут и не только в безопасности дело - если попадётся что-то не то, то поведение скрипта станет непредсказуемым. Оно может и не опасно, или безопасность вас не волнует, просто скрипт сработает хрен знает как, и выдаст хрен знает что. А дальше вы кормите конвейер хрен знает чем, и в итоге получаете не только хрен знает какую ошибку или хрен знает что, но ещё и хрен знает где. Естественно, исправлять тоже хрен знает как. Проще выкинуть скрипт в мусорку, как и всю вашу работу по созданию костылей и подпорочек. Уж поверьте мне, я такого быдлокода повыкидывал немало (ИЧСХ своего). Впрочем: наступать на грабли - ваше священное право. А если кто вам говорит "не ходи туда, грабли", то можете его и послать, а чё - вы свободны.

Fat-Zer пишет:

ну не знаю я awk, и пока не испытываю потребности в его изучении... и что мне теперь? не предлагать альтернативные варианты? лизнуть розетку? повеситься?

нет. Продолжать забивать шурупы молотком, ибо - работает. Ненадёжно, криво, сложно и долго; ну и хрен с ним. Разве это повод учится пользоваться отвёрткой? :p

Fat-Zer пишет:

для этого уже предполагается использовать bash...

дык bash во первых считает через хрен пойми как, так и со строками работает не лучше. Его только как связку, ну или там для _простых_ операций с числами и строками. Ещё он тормооооознооооой. Т.е. в теоретических примерчиках bash всё умеет, вплоть до встроенной СУБД, а на практике... Как морской бой на BrainFuck'е. Т.е. только простенькие задачи можно, вот например Патрег сделал БД в виде простого текствого файла, который потом грузится в bash-массив. Для сетевых интерфейсов, eth0, eth1, и т.д. Всё отлично работает. Вот как у меня. У меня этих eth ровно 3 штуки (на одном из компьютеров, на других вообще по одному).

Fat-Zer пишет:

это всеобщий метод и он вполне имеет право на существование.

это с какого такого перепугу он стал "всеобщим"? Всеобщий метод - поделить программу на отдельные модули, и развивать их самостоятельно, до тех пор, пока разработчик сможет этот модуль целиком в голове держать. Как не сможет - делить модуль на отдельные части. Как же вы скрипт пишете, если даже один однострок в голове удержать не в состоянии?? IRL задачки куда как больше. У нас задачка вполне примитивная, и делить её имеет смысл только если у нас нет подходящего инструмента (т.е. в нашем случае нужно grep и sed записать одним скриптом, причём так, что-бы в этом скрипте было как можно меньше структурных единиц, например команд s, ну а потом нам придётся решить, как выделять повторяющиеся строчки, sed'ом делать sort -u довольно костыльно(хоть и можно), потому придётся применить другой инструмент, при этом ещё и придётся подумать, что произойдёт на стыке этих команд, если что-то пойдёт не так. IRL это очень непростая задача, в итоге получится sed через bash-связку sort -u)

Fat-Zer пишет:

т.к. самое главное. чтобы что-то работало, работало без ошибок

по вашему, правильный ответ в ЕДИНСТВЕННОМ случае это значит "работает"? Не... "Работает", это когда строго доказано, что при ЛЮБЫХ входных данных программа выдаст верный ответ, или вменяемое сообщение об ошибке, если входные данные недопустимы. Это конечно идеал, но вашему скрипту до этого идеала как до самой дальней галактики.

Fat-Zer пишет:

и имело очевидный интерфейс

в данном случае "интерфейса" в смысле человеко-машинного просто тупо нет. Есть интерфейс с ядром, потому тут проще. Это я про входной. Что касается выходного, то перед wc -l неплохо было-бы выдать удобочитаемый для человека листинг, в котором написано, на основании какой информации из ядра программа сделала такой вывод. Полезно хотя-бы в отладочных целях. Просто cat /proc/cpuinfo на такой листинг не катит, нужно где-то по середине оформить вывод в консоль нужных оформленных строчек. А то к ответу "17" веры у меня никакой нет. Т.ч. с интерфейсом у вас тоже никак.

Fat-Zer пишет:

а уж красота - это второй план.

если честно, что такое "красота" по отношению к программе - я не знаю. Программа может быть "рабочей и удобной", и "нерабочей и неудобной". Это две крайние точки двухмерного пространства. Наша задача - достигнуть бесконечно удалённой точки, где абсцисса и ордината сходятся вместе, двигаясь из точки 0. Вот и всё.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

30

Fat-Zer пишет:

я вообще не понял, причём тут это... подумал опечатка...

ага. очепятка.

man bash пишет:

   Word Designators
       Word designators are used to select desired words from the event.  A : separates the event specification from the word  designa-
       tor.   It  may  be  omitted if the word designator begins with a ^, $, *, -, or %.  Words are numbered from the beginning of the
       line, with the first word being denoted by 0 (zero).  Words are inserted into the current line separated by single spaces.

       0 (zero)
              The zeroth word.  For the shell, this is the command word.
       n      The nth word.
       ^      The first argument.  That is, word 1.
       $      The last argument.
       %      The word matched by the most recent `?string?' search.
       x-y    A range of words; `-y' abbreviates `0-y'.
       *      All of the words but the zeroth.  This is a synonym for `1-$'.  It is not an error to use * if there is just one word  in
              the event; the empty string is returned in that case.
       x*     Abbreviates x-$.
       x-     Abbreviates x-$ like x*, but omits the last word.

       If a word designator is supplied without an event specification, the previous command is used as the event.

естественно !$ ab

Fat-Zer пишет:

только вот в этой программе важна скорость написания... и т.к. размер не большой, то количество костылей не выходит за рамки разумного.

верно. но верно только для одноразовых одностроков. А зачем вы тут использованную туалетную бумагу выложили? bx
однако, даже одноразовые одностроки быстрее и проще писать именно так, как я говорю, а не тупо дописывая в конец разные костылики. Иначе это получается (на практике) многострочный однострок, разобраться в котором нет уже никакой возможности, и костыли уже не помогают - ошибка где-то посередине, но даже добираться до этой середины жутко долго. А вот используя мой метод вы получаете компактный sed-однострок, к которому достаточно добавить ваше любимое wc -l, и получить профит.

Fat-Zer пишет:

кроме того мастдай конкатенацией костылей уж точно не славится... там что ни костыль, то комбайн...

ну если рискнуть, и заглянуть внутрь маздайного приложения, мы и увидим знакомые костыли :p
что, кстати, сильно облегчает их взлом. Что до скриптов, так они в маздае вообще не работают. Да и смыла в них нет никакого: какой смысл делать bat файл из одной команды? А две туда уже и не вставить (точнее, вставить можно, но только если они несвязанные, а просто 2 команды). В принципе, в bash тоже имеется эта проблема. За то только в bash нативно вставляются shell команды, в любом другом ЯП (не shell) эти команды вставляются костыльно, потому нормально работать там можно только со встроенными функциями. Дилемма...

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)