< HomePage | Снимки
<- Вторник, 8 Януари 2008 | Начална страница | Четвъртък, 10 Януари 2008 ->
Сряда, 9 Януари 2008

Premature optimization is the root of all evil -- Knut.

Хем горното го знам, хем редовно се застрелвам в крака с някоя глупост като тази дето открих днес. Преди няколко дни компилирах ядро за машина, която ще е с малко дисково пространство и ми се щеше да спестя от ядрото колкото се може повече. В цялото пестене пипах и изключих доста опции зависещи от CONFIG_EMBEDED и с цялата си глупост съм изключил поддръжката на futexes. Което по-принцип не е лошо стига да нямаш glibc компилирано с futex поддръжка и библиотеката ги ползва активно. Всичко работи, само дето като пуснеш Firefox и процесора стои на 100% в busy loop.

Много съм проЗт, два дни се псувам заради тази глупост. Отгоре на това от мързел не бях качил strace, иначе проблема се забелязва за секунда като пуснеш strace -p PID_NA_PROGRAMATA и видиш как се опитва да вика futex функциите и понеже получава -ENOTSUPP започва да ползва чудесен busy loop за чакане.

Да са .... в оптимизатора.

[ Коментари: 3 ]
Коментари

Програмите обикновено не викат директно futex syscalls, освен ако девелоперите им не са отчайващо трудолюбиви да си направят собствени locking/sync механизми и нямат доверие на glibc :)

Написа gat3way на 12-Jan-2008 11:42


Да, проблема беше че ползвам много ново glibc компилирано с тяхна поддръжка.

Написа Георги Чорбаджийски (www) на 12-Jan-2008 12:47


То май при всяка оптимизация това е проблем... преоптимизиране ;)

Написа MacTeP (www) на 12-Jan-2008 19:17