Пак здрасти, Виж коментарите ми по-долу, моля.
On Wed, 21 Jan 2009 23:27:30 +0200 Marian Marinov <[email protected]> wrote: > On Wednesday 21 January 2009 22:33:49 Nickola Kolev wrote: > > Здрасти, > > > > On Wed, 21 Jan 2009 22:10:34 +0200 > > > > Marian Marinov <[email protected]> wrote: > > > Из usr/src/linux/Documentation/IRQ-affinity.txt > > > /proc/irq/IRQ#/smp_affinity specifies which target CPUs are permitted > > > for a given IRQ source. It's a bitmask of allowed CPUs. It's not allowed > > > to turn off all CPUs, and if an IRQ controller does not support IRQ > > > affinity then the value will not change from the default 0xffffffff. > > > > > > IRQ балансиране неможе да се прави в user space тъй като програмите от > > > user space нямат собствено IRQ. Можеш да наредиш отделните хардуерни > > > устройства на отделните процесори, но никога няма да си сигурен кой > > > софтуер на кой процесор ще ти върви. > > > > > > Ако знаеш как се прави това със софтуера, ще съм много любопитен да > > > науча, благодаря. > > > > Намесвам се малко не на време в разговора, за което се извинявам. До скоро > > и аз мислех, че единствено прекъсванията на хардуерни устройства могат да > > се "залепят" към определен процесор/ядро. Оказа се обаче, че не е така. За > > любопитните: > > > > apt-get install schedutils > > man 1 taskset > > Добре де, > наясно ли сте, че за да има правилно разпределение на натоварването върху > процесите трябва всички да бъдат старирани с някакво affinity към даден > процесор. Не, аз лично не съм наясно, признавам. Предполагам, че процесите се стартират с "някакво affinity", което ги прикрепва към процесор/ядро 0. С taskset обаче *можеш* да промениш това. > Аз съм си правил експеримента с patched init който дефакто имплементира > taskset и видях, че това нещо ми пречи повече отколкото да оставя ядрото да > разпределя натоварването. Просто ядрото има доста повече информация за > процеса > отколкото самия потребител. > > Един от основните проблеми които аз съм забелязъл е алокирането на големи > количества памет. > > Ядрото има една много приятна табличка в която знае кой процер на какво > разстоятние е от дадена памет. И кой процесор с коя памет работи в момента. > Точно базирано на тази табличка много често scheduler-а премества даден > процес > от един не натоварен процесор към друг по-натоварен, но по-близо до паметта > която му трябва на процеса. > > Дефакто за да се получи 100% балансирана система трябва софтуерът който ще > работи на нея да е направен така. Безспорно е така, но аз не съм kernel hacker и не знам как точно стои въпроса. Тъй като досега обикновено съм разчитал единствено на ядрото да си се оправя само, не ми се е и налагало да се си играя с taskset. > За който се интересува повече по темата моля да се поразтърси ис beowolf > пощенският списък там всяка година имаме по 1 такова обсъждане. > > Не винаги вързването на даден софтуер или хардуер към точно определен > процесор > носи плюсове. Понякога, особено направено без знанието какво се случва > отдолу, > това може да донесе привидни бонуси в началото и в бъдеще всичко да се > сгромуляса без никаква очевидна причина :( Най-вероятно точно заради това употребата на taskset не е особено популярна. Съмнявам се много типове, освен компанията около Джеф Гарзик, Инго Молнар и други подобни нечовеци, да са наясно какво точно се случва там. С изключение може би на Линус (да се свети името Му). :) > Мариян > _______________________________________________ > Lug-bg mailing list > [email protected] > http://linux-bulgaria.org/mailman/listinfo/lug-bg -- Никола _______________________________________________ Lug-bg mailing list [email protected] http://linux-bulgaria.org/mailman/listinfo/lug-bg
