LINUX.ORG.RU

Продолжение benchmarks Linux vs. Windows от IBM


0

0

Следующая статья от Edward Bradford сравнивает производительность простейших операций копирования в память на Linux (2.2/2.4) и Windows 2000.
И в этих тестах Linux опережает Windows в 1,5-2 раза.

>>> Подробности

★★★★

Проверено:

2Irsi, Ogr: Сеть - великое изобретение. Многим безногим она дала общение. Заблудшим и отчаявшимся - поддержку сочуствующих. Одиноким - друзей. Ищущим - ответы. ... Вот только м@#$кам она ничего не даст ... Не будем реагировать: ОК?

SeRGi
()

2anonymous (*) (2001-06-25 21:30:16.0)

Сам не можешь- думаешь и другие не могут? А ругаться "по телевизору" неверняка не страшно.

anonymous
()

2 онанимус: Античный философ Гераклит говорил, что мудрость состоит не в ?изучении многих вещей?; мудрость ? нечто отличное от всего. И она состоит в том, чтобы за различным узреть единство и за борьбой ? гармонию: ?Люди не понимают, как противоборствующее согласуется с самим собой. Это ? гармония противоположных напряжений, подобно луку и лире?.

И я говорю, что в борьбе противоположностей - есть совершенство. Да я сторонник Unix, я сторонник AMD и VIA, я болел за команду Ferrary и Шумахера еще тогда, когда они не были чемпионами в Ф-1, но это все не заставляет меня жестоко ненавидить Microsoft, Intel, и команду McLaren. Мой брат работает под w2k (что поделаешь, ASP), я под RH.7, у него на работе серваки под FreeBSD и w2k, у меня под KSI Linux, он обожает Делфи, а я прусь от Перла... И что ж, мне нужно за это ненавидеть своего собственного брата? Если бы он был Линуксоидом, то у меня не было бы возможности похвастаться перед ним Star офисом, Мозилой, xmms, драйверами под Dimond MX300 (которые лучше, чем в w2k:) )... Почему бы не воспринимать все с юмором, параллельно получая новые знания? Господа, где же Ваша мораль и этика! Я конечно, не говорю о запрете всего того потрясающего лексикона, но пусть лучше в нем звучит юмор а не злость и неуважение, не так ли?

P.S. Кстати, мой брат болеет за McLaren :)))

IRON
()

>>Решение дифуров - это тест скорее не памяти, а FPU... Незнаю как дифуров, но решение диффуров прямыми методами (aka метод конечных элементов) - точно памяти!

anonymous
()

2ZhekaSmith: Что-то молчит. Может еще есть ссылки ?

Игорь.

anonymous
()

Первый раз читаю топик вынь вс лынь в котором нет грязного флейма :)

Наверное рут спит :) Или ему инет зарубили

anonymous
()

Простой эксперимент:
Что-то вроде
char* p = new char[ 0x10000000 ];
sleep( 60 ); //Sleep( 60000 ) for win32
memusage
sleep( 60 ); //Sleep( 60000 ) for win32
delete [] p;
Лично у меня (NT4 vs RH6.2) на win32 сразу виден скачек в
TaskManager->Memory usage history. Т.е. память отобразилась в свопе.
На RH до обращения к памяти ничего не происходит.
Наверно различие в производительности связанно, в первую очередь, с
организацией подкачки страниц.
2 Ogr, да я согласен, что примитивное копирование блоков памяти
туда-сюда прикладного смысла не имеет (разогрев камня и димов не в
счет). Но в любой прикладной задаче найдется кусок копирования
памяти. Бухгалтеры в таких случаях говорят "Курица по зернышку клюет".

BlackRabit
()

А вот еще одна фича, которую обнаружил мой товарищ: Заворачиваем в dll(win32) и so(linux) функцию void usescanf(size_t count) { char str[] = "01"; int n; for( size_t i = 0; i < count; i++ ) { sscanf(str, "%d", &n ); } //end for } и вызываем из dll | so | exe | elf. Идея в том, что sscanf лежит в прикладной, но не системной dll(so). На win32 ощущается очень сильное замедление по сравнению с linux. Если скомпилить статически, то скорость практически одинакова. Заметно только при многокраных вызовах. Т.е вызовы в win32 dll->dll->dll имеют значительные накладные расходы (очевидно LoadLibrary|FreeLibrary). Можно, конечно, принудительно загрузить dll и удерживать ее в адресном пространстве, но это нужно делать ручками.

BlackRabit
()
Ответ на: комментарий от anonymous

2Anonimous: Project: Linux Aureal Driver http://sourceforge.net/projects/aureal Текущая версия: 1.1.2. Подсказка: ставь драйвер под Vortex2.

Кто-то спрашивал о драйверах MX300 под W2k? ftp://game.kuban.ru/Drivers/a3d/wdm5_12_01_2559.exe Попробуйте, вроде отзывы нормальные (счастливых пользователей). Сам не пробовал.

SeRGi
()
Ответ на: комментарий от BlackRabit

2BlackRabit: Молоток!

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

SeRGi
()

2 SeRGi (*) (2001-06-26 11:01:12.0)
Не факт. Модель защищенных дескрипторов на все-все-все и возможности
аудита (считай стабов) на использование делает NT более тяжелым в
любой операции получения и первого обращения к любому ресурсу.
Когда Irsi спрашивал о поднятых сервисах, он промолчал про включенный
расширенный аудит на память, а это тяжелые операции.

BlackRabit
()

Ребята подскажите: Снес ненавистный Linux, поставить хочу любимый Windows 2000, но не могу избавиться от загрузки ядра. Что делать?

anonymous
()

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

Короче, говнососик биллов, делаешь следующее:
грузишься с дискетки с ДОСом, делаешь:
c:
a:\fdisk /mbr
а потом ребут.

ЛАМЕРЮГА.

R00T
()
Ответ на: комментарий от R00T

А почему дискетка с ДОС? Я же Windows хочу поставить. Сам ты ничего не понимаешь!

anonymous
()

Ну, блин, вообще...
Паренёк, мой тебе благородный совет: RTFM, RTFM и ещё раз RTFM!!!

Ну ладно, "на пальцах" объясню:
LILO записывается "по умолчанию" в область диска, называемую MBR (Master Boot Record) и, фактически, просто устанавливает на выбранный юзером раздел диска флаг "active", а потом передаёт управление BIOS'у назад.

Ну так вот: чтобы избавиться от LILO, тебе надо перезаписать MBR. Самый просто способ - выполнить вышеприведенные действия.

R00T
()

2 anonymous (*) (2001-06-26 11:28:22.0)
1) Грузись с сидюка. NT сам перетрет mbr
2) Читай маны (rfc, readme, howto, msdn etc)
3) Dos потому что тебе так проще.

2 R00T (*) (2001-06-26 11:31:59.0)
Пожалел бы инвалида. Он даже "спасибо" сказать не умеет.

BlackRabit
()

Вот интересно, почему именно ROOT на эту наживку сдетонировал?

anonymous
()

Нет ошибся: еще у BlackRabit с чувством юмора проблемы. СПАСИБО ВСЕМ.

anonymous
()

2BlackRabit : Превратить глупость в шутку - удел великих ;-)

SeRGi
()

Я то же юмора не понял.

Игорь.

anonymous
()

Mnda, strannyi yumor u vas odnako..

anonymous
()

По моему NT и W2k mbr не затирают и процедуру, описанную ROOT, при установке NT после Linux надо выполнять обязательно. W98 mbr переписывает и проблем с lilo в этом случае не будет.

anonymous
()

Да, кстати, (этого я точно не знаю - без шуток) как поставить NT на раздел диска больше 2047 Mb? W2k ставиться нормально на любой раздел, но мне надо NT. To ROOT and BlackRabit: если кого обидел, прошу великодушно извинить: надоели пузомерки, вот и решил дурацкими вопросами флейм в другую сторону повернуть, но видимо неуклюже. Еще раз извините.

anonymous
()
Ответ на: комментарий от anonymous

Хочешь совета? Так сразу и скажи!

Проблема вся в том, что NT4 поддерживает "большие" диски с сервиспака 3 или 4 (не помню точно). Берешь последний сервис пак. Оттуда надо достать файлы ntldr, ntdetect и файлы, относящиеся к файловой системе (fastfat.sys, ntfs.sys). Extract'ом умеешь пользоваться? Тогда достанешь!

Патчишь дистриб. Всё! Пользуйся. Только патч потом всё равно ставить надо ;-(

SeRGi
()

2Anonimous: Пузомерки - мерило, отражающие направленность компании. Раз в IBM появились такие тесты, значит работа с Linux там идёт не на словах, но на деле. Пусть только своим делом занимаются ... (=не трогают ядро и маркетинг ;-) Так что о чем-то они, да говорят.

SeRGi
()
Ответ на: комментарий от SeRGi

> Дело может быть в том, что вынь элементарно выделяет память
> медленнее, а копирование здесь не причем

Вынь просто выделяет память заранее, а линукс - в процессе ее "потребления". Пишется программка из двух строчек:

malloc(двести мег);
setmem();

и в режиме реального времени, например, по xsysinfo, наблюдаем за процессом засирания виртуальной памяти, сначала ОЗУ, потом свопа.

grue
()

Дело явно не в том, что по другому выделяется память. Я сейчас сижу и переписываю тестовую программу - пытаюсь понять, что здесь не так. Уже сделал следующее:
1) расположил вызовы функций измерения времени вплотную к операциям копирования;
2) переписал их, используя инструкцию проца rdtsc ( для пущей совместимости с Линуксом );
3) заменил распределение памяти на вызовы VirtualAlloc/VirtualLock, чтобы не происходило page fault'ов во время выполнения;
4) вставил в Виндовую программу кусок asm кода для копирования, сгенерированного gcc/Linux;
Результат нулевой - расклад в Windows в точности такой же, как до начала экспериментов.
Сейчас еще перегружусь в Linux и попробую там. Бред какой-то ...

Hamster
()
Ответ на: комментарий от Hamster

2Hamster: Так может вынь сразу при запросе памяти возвращет управление программе?

Я поступил иначе: 1. Закоментировал switch в главном цикле, отвечающий за копирование. Результат: скороть увеличилась прилично, но колеблется сильно! 2. Тут я увидел, что цикл проводится всего 4 раза. Увеличил до 200. Постабильней стало и скорость близка к исходной. > memxfer5b -p -f -s 16m 8 200 0 Результат: скорость выше, чем до начала теста (выделение+копирование), но не на много (15-20%). Где правда?

ЗЫ. Мне тут знакомый сказал слудующее: Винда, мол, (для безопасности) обнуляет все выделенную область аж два раза. Шутник! Ха-ха. На требования сертификата С3 ссылается. Может кто аргументированно по этой теме просвятить?

SeRGi
()

>ЗЫ. Мне тут знакомый сказал слудующее: Винда, мол, (для безопасности) обнуляет все выделенную область аж два раза. Шутник! Ха-ха. На требования сертификата С3 ссылается. Может кто аргументированно по этой теме просвятить?

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

Насчет NT. Поставить можно на 4 гб, потом PartitionMagic расширить. Но это под NTFS. Да и не делай системный диск более 7.4 Гб (c winnt директорией). Будут 'глюки'. Лучше 2.

Игорь.

anonymous
()

А все дело в размере блока :) http://irunslowly.tripod.com/memtest/memblck.htm при копировании до 16к, W2K работает быстрее чем линукс. Потом они идут примерно равно. Не случайно был выбран размер в 16м...

Ogr
()
Ответ на: комментарий от SeRGi

насколько я знаю - atapi.sys, atdisk.sys, ntdetect.com, ntldr. из дистрибутива sp5 и выше.......

anonymous
()

2Ogr: Шото я не понимаю, помнишь мою конфигурацию домашней машины?
Так вот, провел я и этот тест...

./memblck 16m
Memory block test './memblck' under Linux
Buffer size: 16777216

1 0.729 0.831
2 0.368 0.459
4 0.212 0.283
8 0.115 0.189
16 0.059 0.152
32 0.034 0.127
64 0.020 0.111
128 0.014 0.098
256 0.010 0.090
512 0.009 0.090
1024 0.008 0.085
2048 0.008 0.084
4096 0.008 0.084
8192 0.008 0.084
16384 0.008 0.084
32768 0.008 0.087
65536 0.017 0.086
131072 0.020 0.093
262144 0.087 0.085
524288 0.085 0.082
1048576 0.087 0.082
2097152 0.086 0.083
4194304 0.087 0.082
8388608 0.089 0.090
16777216 0.090 0.092

Давай екзешник, попробую на w2k, пока еще не убил ее, специально
оставил для измеров пиписьками... И кстати, какая у тебя была машина?

McMCC ★★★
()

2Ogr: Не стал я дожидаться твоего екзешника, попросил друга скомпилить
этот тест на VC6....

memblck.exe 16m
Memory block test 'memblck.exe' under Windows
Buffer size: 16777216

1 1.377 1.474
2 0.517 0.739
4 0.443 0.434
8 0.219 0.279
16 0.079 0.183
32 0.061 0.167
64 0.034 0.159
128 0.018 0.122
256 0.012 0.115
512 0.009 0.105
1024 0.010 0.104
2048 0.008 0.101
4096 0.008 0.102
8192 0.008 0.101
16384 0.008 0.101
32768 0.010 0.099
65536 0.025 0.099
131072 0.024 0.101
262144 0.099 0.103
524288 0.099 0.101
1048576 0.101 0.099
2097152 0.101 0.101
4194304 0.101 0.102
8388608 0.102 0.099
16777216 0.103 0.101

McMCC ★★★
()

Да кстати, весь этот тест является весьма странным, т.к. для расчета времени применяются системные часы, а не вызов вроде GetProcessTimes, который показывает сколько сама программа заняла времени, что весьма существенно во многозадачных системах.
P.S. И почему-то меня не удивляет такой подход линуксоида...

Ogr
()

2Ogr: А вот собранный этот тестик под последним cygwin'ом,
собирал как полагается:
gcc -O2 -mno-cygwin -o memblck.exe memblck.cpp

Хммм... Результат немного лучше!

Memory block test 'memblck.exe' under Windows
Buffer size: 16777216

1 0.824 1.015
2 0.410 0.595
4 0.233 0.337
8 0.123 0.230
16 0.063 0.169
32 0.036 0.152
64 0.021 0.156
128 0.014 0.125
256 0.011 0.113
512 0.011 0.107
1024 0.008 0.102
2048 0.008 0.103
4096 0.008 0.103
8192 0.007 0.101
16384 0.008 0.101
32768 0.008 0.099
65536 0.024 0.101
131072 0.024 0.100
262144 0.101 0.101
524288 0.100 0.101
1048576 0.101 0.101
2097152 0.103 0.101
4194304 0.101 0.099
8388608 0.102 0.101
16777216 0.103 0.099

McMCC ★★★
()

>P.S. И почему-то меня не удивляет такой подход линуксоида...
И какой именно? Я вообщем-то стараюсь быть объективным...
Может зря?

McMCC ★★★
()
Ответ на: комментарий от Ogr

Для расчета времени применяются системные часы по той простой причине, что ( как ты сам можешь убедиться ) при выполнении теста процессор 99% времени проводит в самой программе. Мы же не измеряем производительность системы в условиях жестокой многозадачности, так зачем извращаться и придумывать навороты ( GetProcessTimes ), которые даже на результате не отразятся.

И насчет твоего теста. Pentium-III 933 MHz, PC133 SDRAM, Windows 2000 Professional, Linux 2.4.4.

Memory block test './a.out' under Linux
Buffer size: 16777216

1 0.906 0.939
2 0.451 0.510
4 0.226 0.288
8 0.242 0.321
16 0.121 0.199
32 0.065 0.172
64 0.037 0.165
128 0.023 0.147
256 0.020 0.119
512 0.012 0.111
1024 0.008 0.107
2048 0.005 0.105
4096 0.005 0.104
8192 0.004 0.103
16384 0.009 0.103
32768 0.009 0.103
65536 0.009 0.102
131072 0.025 0.102
262144 0.071 0.102
524288 0.091 0.103
1048576 0.098 0.103
2097152 0.098 0.103
4194304 0.097 0.103
8388608 0.097 0.103
16777216 0.103 0.103


Memory block test 'memblck' under Windows
Buffer size: 16777216

1 0.813 0.918
2 0.404 0.522
4 0.202 0.329
8 0.101 0.222
16 0.051 0.198
32 0.031 0.191
64 0.020 0.186
128 0.015 0.186
256 0.015 0.165
512 0.011 0.158
1024 0.006 0.155
2048 0.005 0.153
4096 0.004 0.153
8192 0.004 0.153
16384 0.010 0.152
32768 0.009 0.152
65536 0.010 0.151
131072 0.013 0.151
262144 0.109 0.152
524288 0.139 0.151
1048576 0.151 0.153
2097152 0.150 0.155
4194304 0.152 0.152
8388608 0.152 0.152
16777216 0.152 0.154

Hamster
()

2Hamster: Это мой AMD K7-750 с PC-100 128m уделывает твой Pentium-III 933 MHz
c PC133 SDRAM, хммм, неплохо :)

McMCC ★★★
()

2Hamster: А как под Линукс ты компилил тест? Я делал как gcc -O2 -o memblck memblck.cpp, как в большенстве случаев предлагается...

McMCC ★★★
()

2McMCC: "И какой именно? Я вообщем-то стараюсь быть объективным...
Может зря?"
Я кстати о Вас куда лучшего мнения, чем Вы думаете. Эта фраза относилась к автору исходной программы, который меряет скорость выполнения не самой программы, а системы в целом.
2Hamster: У Вас нет желания поигратся в настройках BIOS в плане изменения харакетристик доступа к памяти?

Ogr
()

Кстати, раз уж заговорил о ключике -О2, то вот тест на линухе бех него
./memblck 16m
Memory block test './memblck' under Linux
Buffer size: 16777216

1 0.956 1.130
2 0.476 0.598
4 0.259 0.290
8 0.135 0.189
16 0.071 0.141
32 0.040 0.124
64 0.024 0.111
128 0.015 0.099
256 0.011 0.091
512 0.009 0.089
1024 0.008 0.085
2048 0.008 0.084
4096 0.008 0.084
8192 0.008 0.084
16384 0.008 0.083
32768 0.008 0.083
65536 0.018 0.083
131072 0.021 0.083
262144 0.088 0.082
524288 0.086 0.082
1048576 0.084 0.082
2097152 0.084 0.082
4194304 0.083 0.083
8388608 0.083 0.082
16777216 0.086 0.082

На w2k тест собраный cygwin'ом без -О2, аналогичен тесту собранного
под VC6... Так что в любом случае Линукс у меня быстрее w2k

McMCC ★★★
()
Ответ на: комментарий от Ogr

2 McMCC: программа компилилась командой gcc -O2 memblck.cpp. Компилятор gcc 2.95.2, а в Виндах MSVC++ SP5 w/processor pak.
2 Ogr: а там нет таких настроек :((

Hamster
()

2 Hamster: Выложи свой ексешник куда-нибудь, а то мой друган точно компилил
без w/processor pak. Просто стало интересно проверить на вшивость cygwin....

McMCC ★★★
()

2Hamster: Я в своем тоже не видел ни каких настроект пока не заглянул в Advanced Chip settings... А когда увидел, то после пары попыток изначальный тест стал выдавать результаты более чем в два реза лучше, вот только на той машине у меня линукса нет :( не могу сказать как это бы отразилось на нем.

Ogr
()

Я надеюсь Вы компилировали прграммку в Виндовсе как cl /Ox memblck.cpp

Ogr
()
Ответ на: комментарий от Ogr

2 McMCC: выложу через пару часов ( сейчас достучаться до chat.ru не могу ).
2 Ogr: тут этих настроек вообще в принципе нет. Не приходилось встречаться с материнками от Intel'а? Тут вообще все настройки, какие можно, убраны. Нет ни установок памяти, ни частоты процессора.

Hamster
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.