1.4, pavlinux (ok), 13:56, 06/03/2012 [ответить] [﹢﹢﹢] [ · · · ] [↓] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| –2 +/– |
Я конешн понимаю, ускорение и всё такое... но юзать рекурсию в ядре это перебор...
843 static void
844 fill_sons_in_loop (const struct loop *loop, basic_block bb,
845 basic_block *tovisit, int *tv)
846 {
847 basic_block son, postpone = NULL;
848
849 tovisit[(*tv)++] = bb;
850 for (son = first_dom_son (CDI_DOMINATORS, bb);
851 son;
852 son = next_dom_son (CDI_DOMINATORS, son))
853 {
854 if (!flow_bb_inside_loop_p (loop, son))
855 continue;
856
857 if (dominated_by_p (CDI_DOMINATORS, loop->latch, son))
858 {
859 postpone = son;
860 continue;
861 }
862 fill_sons_in_loop (loop, son, tovisit, tv);
863 }
864
865 if (postpone)
866 fill_sons_in_loop (loop, postpone, tovisit, tv);
867 #ifdef __AMDCPUBUG_DFLY01_AVAILABLE__
868 cpu_amdcpubug_dfly01();
869 #endif
870 }
cpu_amdcpubug_dfly01() - это вот это
static __inline void cpu_amdcpubug(void) {
__asm __volatile("nop" : : : "memory");
}
Драгонфлайщеги изобрели виласипед с названием memory_barrier !!! :)
http://lxr.linux.no/#linux+v3.2.9/include/linux/compiler-gcc.h#L10
#if defined(__i386__) || defined(__x86_64__)
#define barrier() asm volatile("" ::: "memory")
#define mb() __sync_synchronize()
#define smp_mb() mb()
# define smp_rmb() barrier()
# define smp_wmb() barrier()
...
Кстати, из того же AMD CPU Programming Guide,
в особых случаях, и в частности на SMP, рекомендуют не забывать про:
#define mb() asm volatile("mfence":::"memory")
#define rmb() asm volatile("lfence":::"memory")
#define wmb() asm volatile("sfence" ::: "memory")
| |
|
2.7, ананим (?), 14:14, 06/03/2012 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| –8 +/– |
> AMD подтвердила догадки разработчиков DragonFly BSD и указала на то, что действительно, при очень редком стечении обстоятельств,
А что, DragonFly BSD не достаточно редкая для тебя?
| |
|
|
4.46, Аноним (-), 16:45, 06/03/2012 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
сам посмотришь. разборка soft link делается через рекурсию - из-за чего максимальный размер жестко задан. Но это не спасает от stack overflow если ты не ext4.
| |
4.49, Аноним (-), 17:08, 06/03/2012 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
в 2.6.10 анализ символьных ссылок осуществляется функциями: link_path_walk->do_follow_link->__vfs_follow_link->link_path_walk->... и так далее. Ниже уже правильно указали.
| |
|
|
6.73, Аноним (-), 08:49, 07/03/2012 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +2 +/– |
> Нет там такого http://lxr.linux.no/#linux+v3.2.9/fs/namei.c#L1470
> ---
> int writebyte(void) {
> return printf("%d", 0);
> }
> int writedigit(void) {
> return printf("%d", writebyte());
> }
> это не рекурсия, а тупа вложенность.
> Вы ещё связанные списки рекуррентными обзовите.
Мужик - спешиал for you. вытащил исходники из git - там тоже рекурсия.
рекурсия идет через link_path_walk -> __vfs_link_walk - а так ничего :)
Ты бы хоть не позорился павлинушка.
| |
|
|
|
|
2.50, Аноним (-), 17:11, 06/03/2012 [^] [^^] [^^^] [ответить] [↓] [↑] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +2 +/– |
>[оверквотинг удален]
> 866 fill_sons_in_loop (loop, postpone, tovisit, tv);
> 867 #ifdef __AMDCPUBUG_DFLY01_AVAILABLE__
> 868 cpu_amdcpubug_dfly01();
> 869 #endif
> 870 }
> cpu_amdcpubug_dfly01() - это вот это
> static __inline void cpu_amdcpubug(void) {
> __asm __volatile("nop" : : : "memory");
> }
> Драгонфлайщеги изобрели виласипед с названием memory_barrier !!! :)
Мужик - ты кремень. Но объясни какие такие барьеры в 1 процессном приложении - которое выполняется внутри одного процессора?
Барьеры всю жизнь нужны были что бы другой CPU мог увидеть данные, или что бы gcc не кэшировал лишнее в регистрах.
тут же барьер стоит в конце функции что бы %esp не был поломан.
| |
|
3.61, pavlinux (ok), 20:07, 06/03/2012 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
>> Драгонфлайщеги изобрели виласипед с названием memory_barrier !!! :)
> Мужик - ты кремень. Но объясни какие такие барьеры в 1 процессном
> приложении - которое выполняется внутри одного процессора?
> Барьеры всю жизнь нужны были что бы другой CPU мог увидеть данные,
> или что бы gcc не кэшировал лишнее в регистрах.
> тут же барьер стоит в конце функции что бы %esp не был
> поломан.
AMD64 Architecture Programmer's Manual Volume 2: System Programming
Chapter 7.1: Memory-Access Ordering
Chapter 7.4: Buffering and Combining Memory Writes
Короча, изучай как работают мутексы, спинлоки,..., там туева хуча барьеров.
| |
|
|
5.81, me (??), 12:58, 07/03/2012 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +1 +/– |
то, что павлинукс как всегда жжет, не значит, что дженерал барьер
там стоит из-за ошибки "внутри одного CPU". :) парни фиксируют проблему только "на полностью загруженном 48 ядерном сервере",это наводит на мысль, что на up - не фиксируют. :)
| |
|
6.87, Аноним (-), 17:35, 07/03/2012 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| –2 +/– |
gcc само по себе одно процессное приложение, не умеет выполнять свои данные на разных CPU.
а вот 48 паралельных gcc - вполне могут создать ситуацию когда CPU сходит с ума и делает не то что надо.
еще один "умелец". хоть бы ознакомился что за тест получается.
| |
|
|
|
|
2.106, Я (??), 10:24, 11/03/2012 [^] [^^] [^^^] [ответить] [↑] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
> Я конешн понимаю, ускорение и всё такое... но юзать рекурсию в ядре
> это перебор...
> 843 static void
> 844 fill_sons_in_loop (const struct loop *loop, basic_block bb,
> 845
> basic_block *tovisit, int
> *tv)
Посмотрите для смеху в каком проекте эта функция определена.
| |
|
|
|
3.25, Аноним (-), 15:01, 06/03/2012 [^] [^^] [^^^] [ответить] [↓] [↑] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
>> AMD на процессорном фронте вообще не радует. После провального бульдозера решил перейти
>> на Intel.
> Список ошибок в Интелах _весь_ прочитал? И понял??
Ошибки есть, и сам встречался - сервер падал без видимых причин, с различными интервалами. Xeon E5405
| |
|
4.93, Michael Shigorin (ok), 02:05, 08/03/2012 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
> Ошибки есть, и сам встречался - сервер падал без видимых причин, с
> различными интервалами. Xeon E5405
Если больше одного и DDR1333, то в биосах S5000 встречается крыжик на тему "сбрасывать на 1066 при >1CPU" -- а так да, при жёстком I/O или просто раз в пару недель без такого сгона 54xx трапаются.
PS: за 55xx подобное тоже наблюдалось, лечилось аналогично.
| |
|
3.40, Аноним (-), 15:59, 06/03/2012 [^] [^^] [^^^] [ответить] [↓] [↑] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
> Список ошибок в Интелах _весь_ прочитал? И понял??
Я думаю достаточно вспомнить брутальный обсирак в sandy bridge где части транзисторов ввинтили избыточное напряжение питания, что приводило к постепенному выгоранию части каналов SATA.
Поскольку проц без чипсета всего лишь брелок на ключи, рассматривать придется платформу в сумме. И у интела по жизни просто ужасные ляпы в чипсетах. А раньше у них то USB горел, то DMA дико глючил, то еще 100500 всяких косяков было.
| |
|
|
|
6.75, Ваня (??), 10:45, 07/03/2012 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| –10 +/– |
Ваше словоизлияние кратко: "Лекарство следовало принимать по 1 таблетке 2 раза в день в течении месяца. Я выпил сразу все 60 таблеток. Моё попадание в больницу испортит репутацию производителю лекарств."
| |
|
7.104, Аноним (-), 00:37, 10/03/2012 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
> попадание в больницу испортит репутацию производителю лекарств."
Если старое лекарство можно было жрать по 2 таблетки в день и это было нормально, а в случае нового, с похожим названием - от этого пациент вообще начинает откидывать коньки, врядли это сделает хорошую репутацию производителю таких лекарств. Ну не должны пациенты играть в ящик от 2 таблеток. Кроме случая когда "лекарство" являет собой какой-нибудь крысиный яд. Ну так и отношение к такому лекарству как к крысиному яду, соответственно :)
| |
|
|
|
4.66, ram_scan (?), 06:49, 07/03/2012 [^] [^^] [^^^] [ответить] [↑] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +8 +/– |
Да даже если не в сумме рассматривать, в интелевых камнях чуть ли не в каждом поколении зачотные баги были. Например 8086/8088 программно не до конца несовместимы с другими камнями "снизу-вверх". То есть реально написать программу пользуясь строго документированными фичами, которая будет работать только на 8086/8088 (и таких в каменном веке понаписали много).
В 80286 была чудесная бага с A20 line, благодаря которому человечество поимело на писюках в виде воркэраунда A20 gate (и который дожил в целях совместимости до нынешних времен). А дальше пошло-поехало. В 386 были грабли с popfd, в 486 была залепуха со сбросом конвейера (ближний переход не всегда его очищал), в первопне была феерическая FDIV грабля, потом эпичный F00F баг всплыл, а дальше вообще без счету, плюхи в предсказателе переходов, плюхи в MMX, плюхи в застревании/протухании кэша, запоминать упаришься.
| |
|
5.103, Аноним (-), 19:08, 08/03/2012 [^] [^^] [^^^] [ответить] [↑] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +1 +/– |
> в первопне была феерическая FDIV грабля, потом эпичный F00F баг всплыл,
> а дальше вообще без счету,
... поэтому они как раз после первопня и сделали микрокод апдейтабельным, чтобы как минимум часть ляпов фиксить не пуская процы под пресс как раньше. Чуть погодя АМД пришли к выводу что идея хорошая и надо б тоже ее слямзить :)
| |
|
|
3.95, Андрей (??), 02:37, 08/03/2012 [^] [^^] [^^^] [ответить] [↑] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
Но всё же интел уже давно выпускает обновления микрокода, а амд только недавно начал и то только для новых cpu. Или я что-то пропустил? Не безошибочные же они были.
А по теме: так правится ли эта найденная ошибка микрокодом или нет?
| |
|
4.116, Аноним (-), 00:52, 14/03/2012 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
> а амд только недавно начал
Где-то в районе каких-то атлонов. Каких именно - вопрос интересный. Но идее уже не первый год. Интел начал раньше, факт, влопавшись в ряд невкусных багов стоивших им денег.
| |
|
|
2.42, nmorozov (ok), 16:00, 06/03/2012 [^] [^^] [^^^] [ответить] [↓] [↑] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +4 +/– |
> AMD на процессорном фронте вообще не радует. После провального бульдозера решил перейти на Intel.
Если воспринить бульдозера как супер процессор, который должен стать the best то да провал...
Но если посмотерть на него с позиции цены, то он показывает очень неплохое отношение цена/качество, и является очень хорошим выбором за свою цену.
| |
|
|
4.59, Аноним (-), 19:24, 06/03/2012 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +4 +/– |
У Intel'а очень сильный маркетинг, имхо. Они им оч. сильно тумана нагоняют, имхо. Мне надоело рыться и видеть что среди линейки Core i5 у одного нет Hyper Threading, у другого есть, но нет AVX и т.д.
И да, знаем мы эти тесты. Вендовый результат меня вообще тут не интересует.
| |
|
|
|
1.14, klalafuda (?), 14:30, 06/03/2012 [ответить] [﹢﹢﹢] [ · · · ] [↓] [↑] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +20 +/– |
Ну вообще помимо зубоскаленья могли бы и спасибо сказать коллективу. Народ приложил весьма недюжие усилия чтобы найти баг, который потенциально может попортить жизнь отнюдь не только им. Причем как водится - в самый неподходящий момент.
| |
|
2.21, klalafuda (?), 14:54, 06/03/2012 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
> Хочется узнать, какие конкретно модели процессоров подвержены, либо не подвержены, проблеме.
* The failure has been observed on three different machines, all running
AMD cpus. A quad opteron 6168 (48 core) box, and two Phenom II x4 820
boxes. All running DragonFly. However, I believe I have discounted
the OS as a possible source of the problem (see below).
| |
|
|
2.79, Andrey Mitrofanov (?), 11:35, 07/03/2012 [^] [^^] [^^^] [ответить] [↑] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
> вот как UNIX желает процы лучше )
Во-первых, :) не юникс, во-вторых, мой 8-ядерник не стал лучше...
> а если серьёзно
> такое если будет в продакшене капец то неповезёт админу )
Да, ничем это никакому продакшену не грозит. Во-первых, это ещё надо _ухитриться так собрать _подходящий исходник. Во-вторых, ну сегфолтится бинарь -- теперь, как раз, одмины продакшенов во всеоружии, знают, чего пересобирать, с NOP-ами. Ну, максимум -- месяц-другой поищут, чтоб убедиться, что Дилон уже нашёл. Но не полгода! :)
| |
|
|
2.114, Александр (??), 14:18, 12/03/2012 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
думаю, никогда.
Во первых, потому что "фирма не обязана... и не гарантировала... и отказ от претензий вы сами подписали, когда устанавливали... и обратитесь к производителю оборудования." Вы уже сталкивались с таким поведением этой фирмы? Столкнётесь. К сожалению.
Во вторых, на 48-процессорный сервер ставить ...
Оно 48 пользователей-то с трудом обслуживает ...
Опять же к сожалению.
| |
|
1.113, Александр (??), 14:07, 12/03/2012 [ответить] [﹢﹢﹢] [ · · · ] [↑] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
Приятно пообщаться с умными людьми :-)
Спасибо коллективу !
Баги в технике встречаются всегда. Особенно приятен тот факт, что когда в моё подшефное производство поступит 48-процессорный аппарат - он будет замечательно испытан и вылизан.
| |
|
2.117, Аноним (-), 00:53, 14/03/2012 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
> Кроме признания, АМД планирует как-то учитывать данную оплошность при проектированни следущих
> CPU/APU?
Подозреваю что они просто апдейтнут микрокод и все.
| |
|
|