Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Монстрикс — это динамичная стратегия, где ты собираешь, улучшаешь и сражаешься с могучими монстрами.

Монстрикс

Мидкорные, Стратегии, Мультиплеер

Играть

Топ прошлой недели

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
89
raidshadowlegend
raidshadowlegend
Лига Сисадминов

Как ядро Linux управляет памятью приложений⁠⁠

17 дней назад

Linux использует подсистему виртуальной памяти как логический слой между запросами приложений на память и физической памятью (RAM). Такая абстракция позволяет скрыть от приложения всю возню с тем, как именно устроена физическая память на конкретной платформе.

Когда приложение лезет по виртуальному адресу, который ему «выставила» подсистема виртуальной памяти Linux, аппаратный MMU поднимает событие — мол, тут попытались обратиться к области, за которой сейчас не закреплена никакая физическая память. Это приводит к исключению, которое называется «ошибка страницы» (Page Fault). Ядро Linux обрабатывает её, сопоставляя нужный виртуальный адрес с физической страницей памяти.

Виртуальные адреса незаметно для приложения сопоставляются с физической памятью за счёт совместной работы железа (MMU, Memory Management Unit) и софта (таблицы страниц, Page Tables). Информация об этих сопоставлениях ещё и кэшируется в самом железе — в TLB (Translation Lookaside Buffer), чтобы дальше быстро находить нужные физические адреса.

Страница — это просто группа подряд идущих линейных адресов в физической памяти. На x86 размер страницы — 4 КБ.

Абстракция виртуальной памяти даёт несколько плюсов:

  • Программисту не нужно понимать архитектуру физической памяти на платформе. VM скрывает детали и позволяет писать код, не завязываясь на конкретное железо.

  • Процесс всегда видит линейный непрерывный диапазон байт в своём адресном пространстве — даже если физическая память под ним фрагментирована.

Например: когда приложение просит 10 МБ памяти, ядро Linux просто резервирует 10 МБ непрерывного виртуального адресного диапазона. А вот физические страницы, куда этот диапазон будет отображён, могут лежать где угодно. Единственное, что гарантированно идёт подряд в физической памяти — это размер одной страницы (4 КБ).

  • Быстрый старт из-за частичной загрузки. Demand paging подгружает инструкции только в момент, когда они реально понадобились.

  • Общий доступ к памяти. Одна копия библиотеки или программы в физической памяти может быть отображена сразу в несколько процессов. Это экономит физическую память.

Команда pmap -X <pid> помогает посмотреть, какие области памяти процесса общие с другими, а какие — приватные.

  • Несколько программ, потребляющих в сумме больше физической памяти, могут спокойно работать одновременно. Ядро втихаря выталкивает давно неиспользуемые страницы на диск (swap).

  • Каждый процесс живёт в своём отдельном виртуальном адресном пространстве и не может вмешиваться в память других процессов.

Два процесса могут использовать одинаковые виртуальные адреса, но эти адреса будут отображены в разные места физической памяти. А вот процессы, которые подключаются к одному сегменту общей памяти (SHM), получат виртуальные адреса, указывающие на одни и те же физические страницы.

Виртуальное адресное пространство процесса состоит из сегментов разных типов: Text, Data, Heap, Stack, сегменты общей памяти (SHM) и области, созданные через mmap. Адресное пространство процесса — это диапазон виртуальных адресов, который ядро «выдаёт» процессу как его среду исполнения.

Каждый сегмент — это линейный диапазон виртуальных адресов с началом и концом, за которым стоит какой-то источник данных (backing store): файловая система или swap.

Ошибка страницы обрабатывается так: ядро поднимает физическую страницу, заполняя её данными из backing store. Когда памяти начинает не хватать, данные из физических страниц, используемых как кеш, сбрасываются обратно в свой backing store. Сегмент Text у процесса опирается на исполняемый файл в файловой системе. А вот стек, куча, страницы COW (Copy-on-Write) и shared memory — это анонимные (Anon) страницы, их хранилище — swap (дисковый раздел или файл).

Если swap не сконфигурирован, анонимные страницы невозможно выгрузить — им просто некуда уходить. В итоге они оказываются «прибиты» к физической памяти, потому что перенести данные с этих страниц во время нехватки памяти некуда.

Когда процесс вызывает malloc() или sbrk(), ядро создаёт новый сегмент кучи в адресном пространстве процесса и резервирует диапазон виртуальных адресов, по которому он теперь может легально ходить. Любое обращение к адресу за пределами этих границ приведёт к segmentation fault — и процесс отправится в небытие. Выделение физической памяти при этом отложено: она будет выделена только когда процесс реально обратится к этим виртуальным адресам.

Пример: приложение сделает malloc() на 50 ГБ, но реально коснётся (то есть вызовет page fault) только 10 МБ. Тогда физической памяти уйдёт всего 10 МБ.

Посмотреть виртуальное/физическое потребление памяти можно через “ps”, “pidstat” или “top”. Столбец SIZE показывает размер виртуального сегмента, а RSS — объём выделенной физической памяти.

Физические страницы, которые используются для сегмента Text или для файлового кеша (page cache), можно освобождать быстро — данные всегда можно снова получить из backing store (файловой системы). А вот для освобождения анонимных страниц сначала нужно записать их содержимое в swap, и только потом страница может быть освобождена.

Политика выделения памяти в Linux

Выделение памяти процессам регулируется политикой распределения памяти в Linux. В системе есть три режима, и выбираются они с помощью настройки vm.overcommit_memory.

1.Эвристический overcommit (vm.overcommit_memory=0)

Это режим по умолчанию. Ядро позволяет процессам «переборщить» с запросами памяти в разумных пределах — как решат внутренние эвристики. Они учитывают свободную память, свободный swap, а также память, которую можно быстро освободить, ужав файловый кеш или slab-кеши ядра.

Плюсы: учёт довольно мягкий; полезно для программ, которые обычно запрашивают больше памяти, чем реально используют. Пока хватает свободной памяти или swap, процесс продолжает работать.

Минусы: ядро не резервирует за процессом физическую память заранее. Пока процесс не потрогает (не обратится к) каждую страницу, никакой гарантии выделения нет.

(знаю, что нынче сравнения в формате плюсы/минусы в статье приравниваются к генерации нейросети, но пока это всё еще лучший вариант описания, так что...)

2.Всегда overcommit (vm.overcommit_memory=1)

С этим режимом процесс может запросить сколько угодно памяти, и запрос всегда будет успешным.

Плюсы: никаких ограничений — можно делать огромные выделения, даже если физической памяти и swap мало.

Минусы: те же, что и в эвристическом режиме. Приложение может сделать malloc() на терабайты при наличии нескольких гигабайт RAM. Пока оно не тронет все страницы, проблем нет — но как только тронет, может включиться OOM Killer.

3.Строгий overcommit (vm.overcommit_memory=2)

В этом режиме ядро запрещает overcommit и резервирует не только виртуальный диапазон, но и физическую память. Нет overcommit — нет и OOM Killer.

При Strict Overcommit ядро отслеживает, сколько физической памяти уже зарезервировано или закоммичено.

Поскольку Strict Overcommit не учитывает свободную память или swap, ориентироваться на free или vmstat бессмысленно. Чтобы понять, сколько памяти можно ещё выделить, смотрят в /proc/meminfo на поля CommitLimit и Committed_AS.

Текущую границу выделения считают так: CommitLimit − Committed_AS.

Настройка vm.overcommit_ratio задаёт предел overcommit’а для этого режима. Предел считается так: PhysicalMemory × overcommit_ratio + swap.

Значение можно поднять, увеличив vm.overcommit_ratio (по умолчанию — 50% от RAM).

Плюсы: OOM Killer не сработает. Лучше, чтобы приложение упало сразу при старте, чем посреди боевой нагрузки от OOM Killer. Solaris работает только так. Strict overcommit не использует free memory/swap для расчёта лимита.

Минусы: overcommit отсутствует полностью. Зарезервированная, но не используемая память простаивает — другие приложения её потрогать не могут. Новый процесс может не получить память, даже если система показывает много свободной RAM — потому что она уже «обещана» другим процессам.

Мониторинг свободной памяти становится хитрее. Многие приложения под Linux не умеют корректно обрабатывать ошибки выделения памяти — это может привести к повреждению данных и странным, трудно отлавливаемым сбоям.

Примечание: и в эвристическом, и в строгом режиме ядро резервирует часть памяти для root. В эвристике — 1/32 от свободной RAM. В строгом — 1/32 от процента реальной памяти, который вы задали. Это зашито в ядро и не настраивается. Например, на системе с 64 ГБ будет зарезервировано 2 ГБ для root.

OOM Killer

Когда система упирается в жёсткую нехватку памяти — файловый кеш уже ужат до минимума, все возможные страницы возвращены — но спрос на память не падает, рано или поздно заканчивается всё, что можно выделить. Чтобы не оставить систему полностью без возможности работать, ядро начинает выбирать процессы, которые можно убить, чтобы освободить память. Этот крайний шаг и называется OOM Killer.

Критерии выбора «жертвы» иногда приводят к тому, что убивается самый важный процесс. Есть несколько способов снизить риски:

  • Выключить OOM Killer, переключив систему на строгий overcommit:

sudo sysctl vm.overcommit_memory=2 sudo sysctl vm.overcommit_ratio=80

  • Исключить критический процесс из рассмотрения OOM Killer. Но даже это иногда не спасает: ядру всё равно нужно кого-то убить, чтобы освободить память. В некоторых ситуациях остаётся только автоматическая перезагрузка, чтобы восстановить работу системы.

sudo sysctl vm.panic_on_oom=1 sudo sysctl kernel.panic="number_of_seconds_to_wait_before_reboot"

Преимущества файлового кеша

Linux использует свободную память, которую сейчас не заняли приложения, для кеширования страниц и блоков файловой системы.

Память, занятую файловым кешем, Linux считает свободной — она доступна приложениям, как только им понадобится. Утилита free показывает эту память как свободную.

Наличие файлового кеша заметно ускоряет работу приложений с диском:

  • Чтение: когда приложение читает данные из файла, ядро делает физический IO и подтягивает блоки с диска. Прочитанные данные помещаются в файловый кеш, чтобы в следующий раз не ходить на диск. Повторное чтение того же блока — это уже логический IO (чтение из кеша), что резко снижает задержки. Кроме того, файловые системы выполняют упреждающее чтение (read-ahead): если замечают последовательный доступ, подгружают соседние блоки заранее, предполагая, что приложению они скоро понадобятся.

  • Запись: когда приложение пишет данные в файл, ядро кладёт их в page cache и сразу подтверждает запись (buffered write). Данные в кеше могут многократно обновляться (write cancelling), прежде чем ядро решит, что пора сбросить грязные страницы на диск.

Грязные страницы файлового кеша сбрасываются потоками flusher (раньше звали pdflush). Сброс происходит периодически, когда доля грязных буферов превышает пороговое значение — оно регулируется параметрами виртуальной памяти.

Файловый кеш улучшает производительность IO, скрывая задержки хранилища.

Преимущества HugeTLB и HugePages

Функция HugeTLB в Linux позволяет приложениям использовать большие страницы — 2 МБ или 1 ГБ вместо стандартных 4 КБ. TLB (Translation Lookaside Buffer) — это аппаратный кеш, который хранит отображения «виртуальный → физический» адрес. Когда нужной записи там нет (TLB miss), приходится идти в таблицы страниц в памяти, а это дорогая операция.

TLB-хиты становятся всё важнее из-за растущего разрыва между скорости CPU и памяти, а также из-за увеличения объёмов памяти. Частые TLB miss могут ощутимо просадить производительность.

TLB — ограниченный ресурс на чипе, и ядро Linux старается использовать его максимально эффективно. Каждый элемент TLB может быть настроен на работу со страницами разных размеров: 4 КБ, 2 МБ или 1 ГБ.

Если те же слоты TLB использовать под страницы покрупнее, можно покрывать куда большие области физической памяти:

  • 4 KB pages: 64×4 KB + 1024×4 KB ≈ 4 MB

  • 2 MB pages: 32×2 MB + 1024×2 MB ≈ 2 GB

  • 1 GB pages: 4 GB

Плюсы:

  • Большие страницы уменьшают количество TLB miss, потому что один TLB-слот покрывает больше адресного пространства.

  • Требуется меньше записей в таблицах страниц, и уровней таблиц меньше. Это сокращает задержки на обход таблиц (2 уровня вместо 4) и уменьшает память, расходуемую на сами таблицы.

  • Large Pages фиксируются в памяти и не участвуют в выгрузке при нехватке RAM.

  • Снижается частота page fault: один fault может заполнить сразу 2 МБ или 1 ГБ, а не жалкие 4 КБ. Приложение «прогревается» заметно быстрее.

  • Если у приложения есть локальность данных, HugeTLB даст выигрыш. Но если оно читает байт там, байт здесь, или прыгает по огромной хеш-таблице, то обычные 4 КБ-страницы могут быть выгоднее.

  • Улучшается работа механизма prefetch: крупные страницы устраняют необходимость перезапуска чтения на границах 4K.

Минусы:

  • Большие страницы требуют предварительного резервирования. Администратор должен заранее выставить количество страниц: vm.nr_hugepages=<число>

(У Transparent Huge Pages предварительного шага нет.)

  • Приложение должно уметь работать с HugePages.

Например, JVM нужно запускать с флагом -XX:+UseLargePages, иначе большие страницы просто лежат без дела.

Посмотреть использование: cat /proc/meminfo | grep -E 'HugePages_|Hugepagesize'

  • Для HugePages нужны непрерывные физические участки памяти — 2 МБ или 1 ГБ. На системе, которая работает долго, большая часть RAM может быть уже разрезана на 4К страницы, и запрос на HugePage будет просто нечем удовлетворить.

Показать полностью 2
Linux Ядро Оперативная память Системное администрирование Программа Длиннопост
11
23
ksenobianinSanta
ksenobianinSanta
Заброшенка

Продолжение поста «Крепость со старыми пушками. Описание штурма и осады неприступных стен англичанами»⁠⁠1

2 месяца назад

Лёгкие пушки изготовлены в середине 19 века.

На многих стволах сохранились гербы. Снизу видно запальное отверстие, через которое поджигался порох.

Высокие стены крепости позволяли замечать подходящие корабли неприятеля задолго до того, как они смогут открыть огонь.

Осмотрим внутренний двор крепости. На лестнице меня встретил крепостной кот.

Главная казарма. После английского штурма крепость не раз перестраивалась, но она сохранила свою первоначальную планировку.

Церковь в казарме.

В одном из помещений казармы расположена инсталляция маяка. Этот маяк по праву считают одним из символов Гаваны.

Изображения этого маяка можно увидеть во многих заведениях Гаваны. Эта картина находится в известном ресторане Эль Флоридита (маяк виден слева).

Вернёмся в крепость. Осталось осмотреть последние детали.

Со внутреннего двора крепости можно выйти к ещё одним сохранившимся пушкам.

Толщина стен очень солидная.

Вид на показанный раннее наблюдательный пункт и глубокий ров.

На этом всё, спасибо за внимание.

Источник - https://dzen.ru/a/Yfl-_jQS9VkJH0Ot

Показать полностью 12
Крепость Пушка Ядро Путешествия Заброшенное Достопримечательности Интересные места Гавана Яндекс Дзен Ответ на пост Яндекс Дзен (ссылка) Длиннопост
1
37
ksenobianinSanta
ksenobianinSanta
Заброшенка

Крепость со старыми пушками. Описание штурма и осады неприступных стен англичанами⁠⁠1

2 месяца назад

Статья посвящена крепости Эль-Морро, которая была построена испанцами в 1589 году для защиты бухты Гаваны. Крепость очень хорошо сохранилась, уцелели даже оригинальные пушки с поворотными механизмами. Ниже приведу историческую справку штурма крепости и описание основных сооружений.

С главного входа можно оценить высоту стен, которые почти 200 лет оставались неприступными. В дальнем конце расположены бойницы для ведения огня вдоль рва.

Вход в крепость осуществляется через длинную галерею.

В те далекие года пушки ещё стреляли ядрами. Но в крепости нашлось и современное нарезное орудие, которое я также покажу.

Галерея выходит на широкую площадку, с которой открывается хороший вид на Гавану. Снизу расположена береговая батарея "12 Апостолов". Вообще, названия многих сооружений крепости имеют библейские отсылки, даже сама крепость известна также как "Крепость Волхвов".

Вход во внутренний двор крепости, справа видно показанную раннее галерею.

Во внутреннем дворе расположена главная казарма и подъем к орудийным позициям. В казарме находилась небольшая церковь и помещение коменданта крепости.

Подъем наверх где до сих пор стоят старые пушки.

Ржавые и побитые временем, но от этого выглядящее только интереснее. Это не музейные экспонаты, поставленные здесь "для галочки", а настоящие пушки на своих боевых позициях.

Но стрелять им уже никогда не придётся. Их эпоха закончилась с появлением современных нарезных орудий с лучшей баллистикой и новыми затворами.

Близость солёной морской воды и сильные ветра буквально разъедают металл. Судя по сохранившимся датам, эти орудия изготавливались (отливались) в начале 19 века.

Крепость предназначалась для защиты Гаваны от атак с моря и была плохо защищена с суши, что и сыграло свою роль во время штурма англичанами. Слева вдали видно невысокий холм, примерно оттуда англичане и начали наступление.

Штурм описан в исторических источниках довольно подробно, можно буквально пошагово отследить действия англичан при осаде и взятии крепости. Перейдем к исторической справке штурма, постараюсь привести его кратко, затронув наиболее интересные моменты.

Штурм крепости проходил в ходе Семилетней войны. В июне 1762 года англичане овладели холмом Ла Кабана, который идеально подходил для обстрела крепости (напомню, крепость строилась для защиты от кораблей, а не от атаки с суши). По какой-то причине испанцы уделили очень мало внимания обороне этого холма, несмотря на приказы командования.

Вид с холма на стены крепости, картина Доминика Серреса.

Толстые стены крепости Эль Морро держали выстрелы английских пушек, так как расстояние до холма было слишком большим. Штурмовать крепость без поддержки артиллерии было невозможно, поэтому англичане начали возводить полевые укрепления и постепенно приближаться всё ближе и ближе ко рву. Пришлось даже копать подземный тоннель в сторону одной из стен.

Вид на крепостные стены и ров.

К 22 июня англичане закончили подготовительные работы и открыли огонь из двенадцати пушек и 38 мортир. Под огнем своей артиллерии англичане разместили батареи в непосредственной близости от крепости. Потери обороняющихся начали расти, в день они теряли до 30 человек. Огонь пушек с близкого расстояния начал приводить к появлению брешей в крепостной стене. Каждую ночь испанцы делали всё возможное, чтобы устранить повреждения, но долго продолжаться это не могло: гарнизон постоянно нёс потери, а выжившие валились с ног от ночных ремонтных работ. В этой ситуации испанцы решились на отчаянный шаг и отправили на уничтожение пушек штурмовой отряд из 988 человек. Успеха они не добились, англичане быстро спохватились и дали отпор.

Наблюдательный пункт на крепостной стене. Англичане вели огонь примерно с холма на заднем плане.

1 июля англичане задействовали флот. Крепость, изначально спроектированная для отражения атак с моря, почти не пострадала и ответным огнем сильно повредила корабли, англичане понесли потери и отступили. Огонь сухопутных пушек был более эффективным, но вскоре английские позиции объял пожар, что дало испанцам время на восстановление повреждений.

Атака английских кораблей, картина Ричарда Пэйтона.

Положение англичан ухудшилось не только из-за пожара, но и из-за начавшихся эпидемий. Более того, приближался сезон штормов, что могло свести на нет все подготовительные работы и поддержку флота. Командованию англичан пришлось срочно снимать часть экипажа и пушек с кораблей для усиления сухопутной артиллерии. К 17 июля англичане при поддержке флотских пушек уничтожили почти все орудия испанцев, которые больше не имели возможности обстреливать позиции атакующих и прикрывать ремонтные работы в крепости. Англичане же полностью овладели инициативой и начали подводить пехоту вплотную к стенам, попутно усиливая огонь батарей. Испанцы вновь предприняли попытку сбить англичан, на этот раз в атаке приняли участие 1300 человек, многие из которых переправились в крепость морем из расположенной рядом Гаваны. Атака вновь была неудачной, англичане не отступили.

Вид с крепостной стены на Гавану. Слева расположен маяк.

24 июля испанцам предложили сдаться, но они продолжили держать оборону. Вскоре англичане получили подкрепление, и всё было готово к решающему штурму. 29 июля испанцы предприняли попытку выбить англичан из рва, но вновь потерпели неудачу.

Затем англичане начали штурм. В час дня они подорвали мощнейший заряд и частично разрушили стену, пехота устремилась в образовавшуюся брешь. В ходе схватки был смертельно ранен командующий обороной крепости, в результате чего испанцы отступили. Англичане получили контроль над крепостью и установили на ней свои орудия. Гарнизон Гаваны сопротивляться уже не мог, вскоре город был сдан. Защитники Эль Морро держали оборону больше месяца.

Вернемся к описанию крепости. Справа на стене видно современное нарезное орудие, которое могли установить в годы Второй Мировой войны. Немецкие подлодки часто подходили к берегам Америки.

Старая пушка с поворотным механизмом. Слева расположен пороховой погреб.

Пороховой погреб внутри. Отверстия в полу могли использоваться для механизма подачи ядер и пороха из крепости.

Неожиданно для себя я даже обнаружил старый крепостной туалет.

Вид на внутренний двор и главную казарму, в которую я также зашёл.

В крепости есть и отдельная батарея, которая смотрит прямо на Гаванский залив. Орудия здесь установлены уже менее мощные, но зато мобильные.

В этом месте залив достаточно узкий, всего около 350 метров в ширину. Так что меньший калибр пушек компенсировался тем, что стрельба из них могла вестись прямо в упор.

На старом снимке начала 20 века видно, что этих лёгких орудий раньше здесь не было, возможно их установили уже позже после реставрации (сейчас пушки стоят на дальней стене, которая смотрит на скалу и залив). Стационарные же пушки сохранились на своих изначальных позициях.

Продолжение поста «Крепость со старыми пушками. Описание штурма и осады неприступных стен англичанами»

Показать полностью 24
Крепость Пушка Ядро Путешествия Заброшенное Достопримечательности Интересные места Гавана Яндекс Дзен Длиннопост
5
Cossmonafft

Путешествие до мантии земли⁠⁠

2 месяца назад

Предположим, что до ядра глубоко, более 3000 км и этот вариант отпадает. До мантии же гораздо ближе. Если брать глубину с континентов - то это в районе 30 км. Бурить скважыну - довольно затратная задача. Да и технологически это сложно.

Но есть вариант - это проходка НАКЛОННОГО СТВОЛА. Ну примерно по принципу строительства метро, канализационных коллекторов, шахт. Допустим с помощью проходческого щита начинаем проходить наклонный тоннель, всё заглубляясь ниже и ниже. Например под углом 20- 30°. Пройти щитом наклонный ствол длиной 30 км думаю по цене не намного дороже строительства ветки метро. И таким макаром мы поедем до мантии. Почему современным учёным не пришло в голову попробовать осуществить. Как известно кто не рискует - тот не пьёт Хмельнушку !

[моё] Геология Спелеология Шахта Метрострой Мантия Ядро Физика Наука и техника Текст
9
8
Vselenziaurum
Vselenziaurum
Осознание собственного сознания — необходимое условие качественного познания реальности.
Будущее - рядом
Серия NooTech

Квантовый скачок: физики впервые засняли продолжительное изменение состояния атомного ядра⁠⁠

3 месяца назад
Визуализация. Ядерный спин атома переключается между квантовыми состояниями. Переключение наблюдается как флуктуация электрического тока, проходящего через атом, в течение нескольких секунд.

Визуализация. Ядерный спин атома переключается между квантовыми состояниями. Переключение наблюдается как флуктуация электрического тока, проходящего через атом, в течение нескольких секунд.

Команда Технического университета Делфта впервые в реальном времени наблюдала, как ядерный спин отдельного атома переключается между квантовыми состояниями, добившись одноимпульсного считывания состояния через электронную оболочку с помощью сканирующего туннельного микроскопа (STM) и электронного спин-резонанса (ESR). Наблюдалась уникальная стабильность ядерного спина на масштабах порядка 5 секунд, что открывает путь к атомарному квантовому сенсингу и управлению на поверхности твердого тела.

Визуализация атома изотопа 49Ti на подложке MgO/Ag

Визуализация атома изотопа 49Ti на подложке MgO/Ag

Исследователи использовали STM/ESR-подход, при котором прямое состояние ядра считывается косвенно — по влиянию сверхтонкого (hyperfine) взаимодействия на электронный спин и туннельный ток, давая «ступенчатые» переключения в реальном времени. На одиночном атоме изотопа 49Ti на подложке MgO/Ag реализован быстрый импульсный режим, где скорость измерения превышает скорость естественного флипа ядра, что обеспечило одноимпульсное чтение без усреднения; характерное время стабильности ядерного спина составило около 5 с, тогда как электронный спин релаксирует примерно за 100 нс.

Значимость результата в том, что продолжительное время жизни ядерного спина на поверхности создают ресурс для долговременной памяти и высокочувствительных сенсоров на атомном масштабе, где ядерные спины выступают более «тихими» кубитами по сравнению с электронными. Достижение одноимпульсного чтения — ключевой рубеж: считывание быстрее релаксации открывает возможность протоколов обратной связи и управляемых последовательностей без статистического усреднения, что критично для поверхностной квантовой метрологии, сенсоров и симуляторов.

Показать полностью 1
[моё] Квант Физика Наука Открытие Технологии Делфт Нидерланды (Голландия) Атом Ядро Микроскоп Прорыв Исследования Спина Будущее Ученые Научпоп
2
1
korpulentus
korpulentus

Пупупу⁠⁠

3 месяца назад
Пупупу

Финн который долго запрягал

Linux Ipv6 Ядро Без рейтинга
17
13
Musrepov
Musrepov
Видеохостинг на Пикабу

Ядро в голову⁠⁠

3 месяца назад
Перейти к видео
Ядро Манекен Баллистический гель Выстрел Slow motion Видео Короткие видео
11
99
TechSavvyZone
TechSavvyZone

Технологии : "NVIDIA" тензорные ядра, что это и с чем едят?⁠⁠

6 месяцев назад

Выпуск серии видеокарт RTX20 в свое время стал важнейшим событием в сфере компьютерных технологий. Десктопные видеокарты впервые получили отдельные тензорные ядра. Что это такое? Как работают эти ядра и для чего используются?

CUDA и тензорные ядра

Работа с графикой — специфическая задача для компьютерного «железа». Здесь требуется выполнять довольно однообразные команды с большим объемом данных. Архитектура CPU для этого подходит плохо. Из-за ограниченного числа ядер и АЛУ (арифметико-логических устройств) процессоры не могут быстро делать объемные операции по сложению и умножению.

Был необходим максимальный параллелизм — одновременная обработка данных. Одним из решений стали CUDA-ядра — технология, созданная Nvidia больше десяти лет назад. Эти ядра создали специально для параллельной работы. На чипе помещались сотни и тысячи CUDA-ядер, а их число стало одним из критериев оценки производительности видеокарты.

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

Однако обработка больших объемов данных нужна не только при выводе графики. Она требуется для научных вычислений, моделирования физических процессов и машинного обучения. Во всех этих задачах одна из главных операций — перемножение матриц.

Задача непростая. Скажем, для решения вышеописанного примера нужны целых 64 умножения и 48 сложений. Не говоря о том, что промежуточные результаты нужно еще где-то хранить. Для операций чтения и записи нужны дополнительные регистры и достаточно скоростная кэш-память.

Может ли с этой задачей справиться CPU? Вообще-то, да. Специально для таких вычислений в процессорах начали появляться инструкции MMX, SSE и (самые совершенные) AVX. Однако видеокарты с их многочисленными CUDA-ядрами — более предпочтительный вариант. Они могут распараллелить большую часть простых операций сложения и умножения. Но даже для них задача просчета матриц оставалась трудоемкой. Решением стали тензорные ядра.

Одно такое ядро способно перемножить две матрицы за один такт. В то время как CUDA-ядрам требуется несколько тактов.

Первое тензорное ядро представляло собой микроблок, выполнявший суммирование-произведение матриц 4x4. Могли использоваться значения FP16 (числа с плавающей запятой размером 16 бит) или умножение FP16 с добавлением FP32.

Размерность рабочих матриц невелика. Ядра при обработке реальных наборов данных обрабатывают небольшие блоки более крупных матриц, в итоге формируя окончательный ответ.

Решение оказалось крайне эффективным. Специалисты из Anandtech провели замеры производительности топовых решений от Nvidia — без тензорных ядер и с ними.

В операциях перемножения матриц (GEMM) прирост производительности с использованием тензорных ядер колоссальный.

Применение тензорных ядер

Научные вычисления

Тензорная математика активно используется в физике и инженерии для решения всех видов сложных вычислений. Например, в механике жидкостей, электромагнетизме, астрофизике, медицине и климатологии. В суперкомпьютерах для этих задач обычно используют крупные кластеры с тысячами высокопроизводительных процессоров уровня Xeon Platinum или AMD Epyc. Однако видеоускорители стали неотъемлемой частью практически любого суперкомпьютера. Подавляющее число машин из рейтинга Top500 работают на базе решений от Nvidia.

Машинное обучение

Задача глубокого обучения в самом простом смысле — это работа с математическими выражениями. Простейший вариант — нейронная сеть, состоящая из одного слоя с двумя нейронами и линейными функциями активации. Представлена она вот таким умножением вектора на матрицу:

Задача обучения сводится к поиску наилучших коэффициентов W. То есть предполагаются матричные операции.

На практике нейросети чаще всего многослойные, и математические выражения получаются куда сложнее. Однако принципиально используются все те же действия — умножение и сложение матриц. Тензорные ядра как раз ориентированы на эти действия.

Самый яркий пример — суперкомпьютер, созданный Microsoft совместно c OpenAI. В нем использовали 10 тысяч графических процессоров Nvidia V100. Именно этот компьютер применили для обучения ChatGPT-3. Продукты Nvidia можно найти в Microsoft Azure, Oracle Cloud и Google Cloud.

Илон Маск для своего ИИ Grok также задействует продукцию Nvidia. Изначально это был кластер на 20 тысяч графических процессоров H100. Недавно для обучения версии GROK 3 миллиардер запустил суперкомпьютер с сотней тысяч NVIDIA H100! Теперь вы можете понять, почему NVIDIA стала самой дорогой компанией и продолжает наращивать прибыль.

Инференс нейросети

Инференс — это запуск уже обученной модели, «скармливание» данных и получение результата. Процесс менее требователен к вычислительной мощности. Но здесь все так же используются матричные операции. Сюда входит распознавание текста (например, в голосовых помощниках), поиск объектов на изображении (распознавание лиц, номерных знаков), шумоподавление и не только.

Тензорные ядра и здесь предлагают высокую производительность. Они позволяют запускать «легкие» нейросети прямо на домашних видеокартах средневысокого ценового сегмента. Например, запустить Chat with RTX — тут достаточно RTX 30 или 40 серии с минимум 8 ГБ видеопамяти. Stable Diffusion также можно запустить локально на видеокартах. Однако производительность каждой модели зависит еще и от ПО. Оно не всегда в полной мере задействует те же тензорные или CUDA-ядра.

DLSS (Deep Learning Super Sampling)

Один из самых доступных вариантов инференса нейросетей — технология DLSS. Специально обученная на игре нейросеть запускается на тензорных ядрах видеокарты, повышая разрешение картинки в реальном времени. Игрок, в свою очередь, получает более высокий FPS. DLSS 3 работает только на видеокартах серии RTX40.

Где имеются тензорные ядра

Nvidia

Поскольку это авторская разработка «зеленых», то именно «тензорные ядра» можно найти лишь в продукции этой компании.

Впервые появились в Nvidia TITAN V в 2017 году — карта имела 640 ядер. После этого ядра стали неотъемлемой частью профессиональных ускорителей

С каждой новой архитектурой появлялось усовершенствованное поколение тензорных ядер. Так что сравнивать их число в рамках разных поколений некорректно. Есть и различия в поддерживаемых форматах данных. Первые ядра могли складывать матрицы с данными только FP16, а современные имеют поддержку куда больших форматов.

В десктопных и мобильных видеокартах технология стала доступна с приходом серии RTX20.

Именно благодаря тензорным ядрам пользовательские карты RTX можно использовать для работы с нейросетями. А также получить апскейл с использованием ИИ. Альтернативные технологии вроде XeSS и FSR базово специальных ядер не требуют.

AMD

Компания «красных» на рынок ИИ вышла относительно недавно. Аналогом тензорных ядер у них является Matrix Core Technologies, которая появилась в архитектуре CDNA 3.

Ядра Matrix Core Technologies пока встречаются только в AMD Instinct MI300A (912 штук) и MI300X (1216 штук). Новые ИИ-ускорители планируют поставить в немецкие суперкомпьютеры Hunter и Herder — в 2025 и 2027 годах соответственно. Сейчас же у немцев работают суперкомпьютеры Hawk и JUWELS на базе Nvidia A100.

Intel

У «синих» используются ядра XMX (Xe Matrix Extensions), созданные специально для матричных вычислений. На них аппаратно работает и фирменный апскейлер Intel XeSS. Встретить ядра XMX можно в линейке видеокарт ARC.

Ядра XMX используются и в Intel Xᵉ HPC 2, установленных в Data Center GPU Max. Графика Xe2-LPG будет встроена в процессоры Lunar Lake. Там также будут использоваться XMX-ядра для задач, связанных с работой ИИ.

Google

В компании не стали изобретать отдельные ядра, а нацелились сразу же на разработку полноценных плат. Они получили название TPU — Tensor Processing Unit. Эти платы специализируются на обработке матриц. Они подходят как для тренировки, так и выполнения нейросетей.

Показать полностью 23
Технологии IT Компьютерное железо Компьютер Инженер Nvidia Видеокарта Производство Электроника Чип Компьютерная графика Ядро Длиннопост
6
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии