The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз ядра Linux 6.7, opennews (?), 08-Янв-24, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


109. "Релиз ядра Linux 6.7"  +/
Сообщение от Аноним (113), 08-Янв-24, 16:44 
Речь не о том, что тормозит, а о том, что спинлоки электричество жрут, проц греют, кэш забивают, да пайплайн засоряют. Предложенное решение этой проблемы
1. электричество хоть всё же и жрёт, но меньше, так как работает асинхронно по записи к кэш/память, что долго и гораздо реже, чем дёргать кэш и память каждые несколько циклов. Но при этом жрёт чуточку больше постоянно, так как наличиствует несколько дополнительных транзисторов. Но они мосфеты, поэтому постоянно жрать будет только операция сравнения. Учитывая, что в каждом модуле ядра есть по нескольку спинлоков и они по многу раз в секунду активируются, то не удивлюсь, если от такого решения система станет намного энергоэффективнее.
2. не держит нужную линию в кэше, освобождая кэш 3 уровня для других потоков и кэш 1 уровня для других гиперпотоков. Исполнительные блоки ядра тоже освобождается для других потоков и гиперпотоков.
3. конвейер не засоряется спекулятивно исполненными инструкциями с неверными предсказаниями, а сразу останавливается

Ответить | Правка | Наверх | Cообщить модератору

115. "Релиз ядра Linux 6.7"  +2 +/
Сообщение от Аноним (87), 08-Янв-24, 17:02 
> спинлоки электричество жрут, проц греют, кэш забивают, да пайплайн засоряют

вы неправильно используете спинлоки или не понимаете что это и зачем, спинлоки ставят когда контекст не позоволяет переключение контекста - это оброботчики прерываний в первую очередь и на короткий код, да даже они давно все threaded irq используют.

Ответить | Правка | Наверх | Cообщить модератору

190. "Релиз ядра Linux 6.7"  +/
Сообщение от Аноним (190), 08-Янв-24, 19:09 
Спинлоки - это активное ожидание. while(memory[x] != neededValue);
То есть
label:
movq (%rcx), %rdx;
cmp $0xneededValue, %rdx;
jne label;

То есть постоянно жрёт энергию, срёт в кэш и конвеер. Но оказывается что они давно уже не спинлоки. https://lwn.net/Articles/790920/ - с третьепня уже всё на на monitor/mwait. Одно не понятно: почему mwait так варварски был специфицирован (не как указанно в моём сообщении, а только для 0 кольца и с участием ОС), если очевидно, что на многоядерных процах это будет полезно и чисто для юзерспейса. Для IPC без участия ядра ОС через кэш на отмапленной в оба процесса странице памяти. И не понятно, зачем для юзерспейса делать отдельные инструкции umonitor/umwait, а не заюзать те же, просто не вызывая исключения, если заюзаны из юзерспейса.

Ответить | Правка | Наверх | Cообщить модератору

197. "Релиз ядра Linux 6.7"  +1 +/
Сообщение от Аноним (154), 08-Янв-24, 19:42 
Спинлоки всё же не так топорно реализуются, см например https://stackoverflow.com/questions/6935442/x86-spinlock-usi...
Ответить | Правка | Наверх | Cообщить модератору

191. "Релиз ядра Linux 6.7"  +1 +/
Сообщение от Аноним (154), 08-Янв-24, 19:13 
Современный CPU не работает с памятью прямо, только через кеш. Для задач синхронизации и нельзя никак иначе потому что CPU должен поддерживать модель консистентности обращения к памяти чтобы блокировки через память вообще работали. Память сама по себе ничего не синхронизирует
Ответить | Правка | К родителю #109 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру