LINUX.ORG.RU

про шедулер линукса


0

0

я сегодня обнаружил одну вещь от которой прифигел.  Эта вещь пошла в
мою копилку доказательств что линукс пионерская поделка..

Итак имеем 2-процессорный сервер с обычным генту:

$ uname -a
Linux some_srv 2.6.16.19 #1 SMP Sat Jun 23 19:35:24 MSD 2007 x86_64 Intel(R) Core(TM)2 CPU 6700 @ 2.66GHz GenuineIntel GNU/Linux

Запускаю 3 процесса тупо жрущих CPU.

Имеем:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
13081 user    25   0  6992  868  740 R  100  0.0   4:48.62 a.out
13080 user    25   0  6988  868  740 R   50  0.0   2:24.87 a.out
13082 user    25   0  6992  868  740 R   50  0.0   2:24.73 a.out

мы видим что одному из процессов тупо отдано в 2 раза больше CPU.
★★★★★
Ответ на: комментарий от fmjs

> ...OS X, вполне адекватно работающей на SMP...

OS X как раз и знаменита тем, что отвратительно работает на SMP -- она вообще не для этого.

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

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> OS X как раз и знаменита тем, что отвратительно работает на SMP -- она вообще не для этого.

Наглый ***деж. BSD подсистема в OS X да, возможно очень неадекватно себя ведет, но 3 запущенных активных потока, не с чем более не взаимодействующих, ее абсолютно не используют. А реализация SMP в Mach микроядре сделана очень замечательно.

Да и BSD подсистема в OS X вполне справляется с числом корок 2 и 4.

> -- она вообще не для этого.

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

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

fmjs:

> Наглый ***деж.

Поверь дяде! :-)

SMP на десктопах начали пускать год назад; а я, вообще-то, не про десктопы говорил. OS X штука сугубо десктопная, ей уже на 4 корках немного хреновато делается, а обсуждаемый шедулер 512 без проблем держит...

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

>> Наглый ***деж.

> Поверь дяде! :-)

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

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

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

Для справки:

====

Mach is an operating system microkernel developed at Carnegie Mellon University to support operating system research, primarily distributed and parallel computation. It is one of the earliest examples of a microkernel, and still the standard by which similar projects are measured.

The project at Carnegie Mellon ran from 1985 to 1994, ending with Mach 3.0. A number of other efforts have continued Mach research, including the University of Utah's Mach 4. Mach was developed as a replacement for the kernel in the BSD version of Unix, so no new operating system would have to be designed around it. Today further experimental research on Mach appears ended, although Mach and its derivatives are in use in a number of commercial operating systems, such as NEXTSTEP and OPENSTEP, and most notably Mac OS X (using the XNU kernel). The Mach VM system was also adopted by the BSD developers at CSRG, and appears in modern BSD-derived UNIX systems, such as FreeBSD. Neither Mac OS X nor FreeBSD maintain the microkernel structure pioneered in Mach, although Mac OS X continues to offer microkernel Inter-Process Communication and control primitives for use directly by applications.

====

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

Linux-у с его шедулером, до возможностей Mach еще расти и расти, и никогда не дорасти.

fmjs
()
Ответ на: комментарий от Die-Hard

Серьезно,

Прямо сейчас у нас есть 250 KEUR, надо нечто крутое прикупить насчет SMP. Все тесты пока показывают, что Линух масштабируется лучше всех (всего лишь на 32-64 корки) -- лучше хваленого ХПУКСа, лучше Сантехники, лучше ИБМовских хреновин, etc...

KISS принцип, как я понимаю.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> ХПУКСа

Если это xnu имелся в виду, то xnu != Mach, xnu это Mach с кучей говна (если рассматривать его как SMP-заточенную ось). Вы возьмите чистый Mach, и его погоняйте, а сервисы FS/Network/прочие -- либо ручками, либо вообще не используйте :)

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

>шедулер должен справедливо давать CPU, то есть перераспределять процессы.

кому должен? в винде вообще отсутствует TS класс планировки и живут же люди.

основной (и долгоиграющий) минус - это отсутствие актуальной поддерживаемой документации (хотя бы на уровне man страниц), тут - по планировщику и интепретации nice values для SMP.

возьмите linux 10-летней давности с одной runqueue и будет вам все аналогично продвинутой во всех отношениях netbsd.

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