Просветите, что такое invlpg? Инструкция? Почему Linux ее не вызывает?
Объективно: у меня 2 машины (работа и дом), у обоих Matrox G4xx карты и Athlon/Duron процессоры, ядра 2.4.x серий, за год и полгода соответственно проблем не было.
Может это надумано? Были у кого то реальные падения?
И еще: исправить в драйвере AGP GART это можно?
nopentium уверен даст тормоза ... не хочется их. Получится 486 разогнанный до 900MHz с несколькими конвеереами.
>А кого они должны информировать? Линуса Торвальдса что-ли :) ??
Могли бы просто на сайте обьявление опубликовать ;)
(а то заявили только 4 minor бага для своих K7)
invlpg - инструкция процессора (invalidate page) помечает эту страничку в кеше процессора как not up to date или навроде того.
Проблема (так как описана) явно надумана. Но есть другая проблема - заключается она в том что AGP GART драйвера в линуксе мапят видеопамять с включенным ghjwtccjhysv rtitv& В результате после speculative write этот кеш сбрасывается обратно в память и корраптит ее. По крайней мере именно таково воследнее об'яснение ;) mem=nopentium всего-лишь отключает 4M страницы, в результате имеем больше TLB flushes. Если никаких проблем нет - то и mem=nopentium использовать никчему.
Я читал списке рассылки kernel-devel хай по этому поводу , но так ничего из него и не понял .. Одни говорят -- надуманно , другие -- нет . Но проскакивало там и то что баг этот может происходить при наличии видеокарт Nvidia и "родных" драйверов к нему .. Грин , ты бы не мог прокоментировать ? Я конечно понимаю что дрова закрытые и наверняка ничего сказать нельзя , но дело в том что как раз на связке Атлон-Джифорс при активном использовании АГП (в сильных играх нередко , в иксах -- раз вмесяц , но стабильно) ядро просто умирает полностью и бесповоротно .. И от коллег такое слышал .. Может -- оно ?
Народ, а нахрена вообще страницы 4Мб нужны? Насколько я знаю,всюду широко используются 4Кб страницы (на x86), и это во многих случаях оптимально. Где же четырёхмеговые используются?
4х мегабайтные страницы используются для кернела. В том смысле, что вот распаковался кернел на многа мегабайт, и всего по одной странице на каждые 4 мегабайта создается. Все остальное, естественно, делается через 4х килобайтные страницы.
Я считаю что проблема больше похожа на какие-то проблемы с железом. Причем не ошибки, а именно проблемы. У меня Dual Athlon 1700+ и GeForce 3 какая-то. Первый день все висло очень быстро под нагрузкой. Поставили еще один вентилятор в корпус - все прекратилось.
А игры - они ж как раз процессор и память неслабо загружают...
>Я считаю что проблема больше похожа на какие-то проблемы с железом. Причем не ошибки, а именно проблемы. У меня Dual Athlon 1700+ и GeForce 3 какая-то. Первый
>день все висло очень быстро под нагрузкой. Поставили еще один вентилятор в корпус - все прекратилось.
>А игры - они ж как раз процессор и память неслабо загружают...
Ссылаясь на комментарии slashdot по этому поводу - эта ошибка исправлена в K7 6:6:2 и новее
т.е. начиная со stepping = 2.
Кто-нибудь может доходчиво объяснить какие фичи отключает параметр
ядра mem=nopentium? Использование mmx при копировании блоков памяти
я думаю не должно страдать, так как насколько я понимаю должно
агресивно инлайниться и поэтому не являться отключаемой возможностью.
Вообщим, я думаю могу себе позволить обойтись без 4Mb странички(ек).
Неприятно конечно засирать TLB кучей ядреного мусора.
Интересным образом ошибка никак не затрагивает FreeBSD. Совершенно несознательно они использовали 4M странички для kernel именно безопасным образом. Sheer luck :)
6:6:x это насколько я понимаю athlon? Что можно сказать о duron'ах? в частности 6:3:1 (у меня такой) глюкав или нет?
Я использую nvidia'вские драйверы, и бывало у меня бывало висла машина, правда очень редко. Вчера поставил mem=nopentium, вроде пока никаких подвисаний, но для уверенности надо погонять подольше.
Что такое TLB? если не сложно, киньте урлов где про него прочитать...
> Что такое TLB? если не сложно, киньте урлов где про него прочитать...
Translation look-aside buffer. Функционирует как кэш для элементов page table. Чтобы пересчитать виртуальный адрес в физический, процессору необходимо свериться с page table, но читать её всякий раз из медленной памяти слишком накладно получается. Bот уже прочитанные элементы и кэшируются на будущее.
На developer.intel.com гора PDF документов для интересующихся.
Я ни разу не видел полного зависания машины с драйверами nvidia. Иксы вешались бывало так,
что клава не действовала, но машина при этом принимала удаленные соединения и полностью
управлялась по ssh. Я думаю, что все кто говорит о зависаниях, видели "зависания"
именно такого характера.
Да, в основном наблюдались зависания такого характера. Висли иксы и клавиатура. Но пару раз было так что вешалось вобще всё - машина даже не пинговалась.
>Новость от 11.09.2000 считается новостью и 23.01.2002? Класс... Не прошло и полтора года как новость дошла.
Комментируя комментарии со slashdot:
вместо того, чтобы сказать - "Это баг железа"
они (AMD) сказали "Здесь патч для Win2k"
и этим полностью притупили бдительность разработчиков 2.4.
Так что новость это или нет для не windows пользователей - это еще вопрос.
>6:6:x это насколько я понимаю athlon? Что можно сказать о duron'ах? в частности 6:3:1 (у меня такой) глюкав или нет?
Берешь w2k и запускаешь что-нить 3D (но не quake3) - если повесилась насмерть - значит баг.
Но я так думаю что 6:3:1 просто обязан быть с багом according to stepping (nb: у меня такой же)
> (в сильных играх нередко , в иксах -- раз вмесяц , но стабильно) ядро просто умирает полностью и бесповоротно .. И от коллег такое слышал .. Может -- оно ?
Нет. поскольку Nvidia драйверя состоят и из в том числе бинарного кернлного модуля. (в котором есть ошибки, например не так давно исправили random memory corruption) то он вполне может вызывать и зависания кернела и все остальное что ему угодно.
Более того, поскольку X сервер может работать с PCI устройствами напрямую (случай fbdev не рассматриваем) он тоже может завесить всю PCI шину при достаточной удаче/неудаче. А за шиной умрет и вся машина.
Тем не менее воплей о виснущих атлонах A2 (6:6:2) немало. И после этой "сенсационой новости" посыпались сообщения о том, что mem=nopentium проблему решает.
16 INVLPG Instruction Does Not Flush Entire Four-Megabyte Page Properly with Certain Linear Addresses
>>>A0,A2=present
>>>A5=fixed
17 Deadlock May Occur in a Two-Processor System in the Presence of Probe to
Memory Mapped I/O
>>>unfixed
18 Processor May Issue Non-Connect Bus Cycle After FID Special Cycle
>>>A0,A2=present
>>>A5=fixed
19 Processor Does Not Support Reliable Microcode Patch Mechanism
>>>A0,A2= don't exist
>>>A5=present !!!
Page 7:
16 INVLPG Instruction Does Not Flush Entire Four-Megabyte Page Properly with Certain Linear Addresses
Products Affected. A0, A2
Normal Specified Operation. After executing an INVLPG instruction the TLB should not contain any
translations for any part of the page frame associated with the designated logical address.
Non-conformance. When the logical address designated by the INVLPG instruction is mapped by a 4-MB
page mapping and LA[21] is equal to one it is possible that the TLB will still retain translations after
the instruction has finished executing.
Potential Effect on System. The residual data in the TLB can result in unexpected data access to stale or
invalid pages of memory.
Suggested Workaround. When using the INVLPG instruction in association with a page that is mapped via
a 4-MB page translation, always clear bit 21.
Resolution Status. Fix planned for a future revision.
Так что требуйте при покупке K7 6:6:2 (rev A5)
Так что если комманда Linux все сделает правильно то это будет не баг а фича и никакой потери
производительности ПОЧТИ не будет ;)
>Прошу привести строчку по ссылке, в которой сказано что Linux делает invlpg на 4M страницы.
Я уже ничего не понимаю:
http://www.geocrawler.com/lists/3/Linux/35/175/7626960/
Теперь выясняется что это баг Linux драйвера AGPGART.
(Хотя AMD и не отрицает уществование подобной ошибки в их камнях)
Т.е. как я понял шум подняли NVidia пользователи!
А AMD считает что это ошибка Linux:
#Our conclusion is that the operating system is creating coherency
#problems within the system by creating cacheable translation to AGP
#GART-mapped physical memory.
Как я понимаю - драйвер работает с AGP памятью как WB вместо WC.
>про AGP GART я еще в 10м комментарии об'яснил.
значит AMD была права заявив "Здесь патч для Win2k" и незаострив внимания
что это баг железа. Поскольку все остальные операционки - Linux *BSD не используют
этот баг ;)