Warning: mkdir(): No space left on device in /var/www/group-telegram/post.php on line 37

Warning: file_put_contents(aCache/aDaily/post/experimentalchill/--): Failed to open stream: No such file or directory in /var/www/group-telegram/post.php on line 50
Experimental chill | Telegram Webview: experimentalchill/277 -
Telegram Group & Telegram Channel
Fast Commits в fsync

Я с универских времен изучал fsync, но только на уровне, что этот вызов -- самая последняя инстанция перед тем, как сказать диску, что надо всё на него сбросить. К своему удивлению, спустя несколько лет, я наткнулся на работу коллеги про Fast Commits, которая пытается соптимизировать fsync в EXT4 в Linux уже несколько лет, и, кажется, у этого дела виднеется свет в конце тунеля. Также получили на USENIX ATC 2024 best paper award https://www.usenix.org/conference/atc24/presentation/shirwadkar

fsync в EXT4 работает через алгоритм JBD2 (Journaling Block Device v2), который хранит последние операции работы с диском и применяет их, гарантируя, что всё корректно применится даже в случае отказа машинки. Первый инсайт, который я узнал -- всё это дело происходит раз в 5 секунд и при каждом вызове fsync.

Второй инсайт, что JBD2 хранит минимум 3 блока по 4kb на каждую операцию: блок дескриптора (метаданные о других блоках в коммите), по крайней мере один измененный блок метаданных и блок маркера коммита, указывающий конец коммита. Метаданные о дополнительных блоках нужны в интересных случаях, когда, например, машинка умерла, при загрузке она начнёт восстаналивать данные и потом она во время этого умирает. Идемпотентность можно только гарантировать с помощью сравнения изменений, поэтому JBD2 имеет чуть бОльший оверхед, чем возможно представляют себе люди. Из-за маркера коммита получается, что JBD2 делает минимум 2 операции с диском, что тоже немного неожиданно.

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

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

Как можно догадаться, даже такая простая идея заняла около 6 лет, чтобы протащить в ядро. Очень много уделялось времени обратной совместимости, а также что делать со сложными операциями, например, filesystem resize, которые обязаны уйти в старый JBD2 и как теперь работать с обоими журналами.

В целом на бенчмарках экономия в 100-200 микросекунд, что для частых fsync собирается в неплохую историю. Для HDD это не такие большие цифры, а вот с развитием SSD это уже значительно. Включить на linux это дело можно через tune2fs -O fast_commit.



group-telegram.com/experimentalchill/277
Create:
Last Update:

Fast Commits в fsync

Я с универских времен изучал fsync, но только на уровне, что этот вызов -- самая последняя инстанция перед тем, как сказать диску, что надо всё на него сбросить. К своему удивлению, спустя несколько лет, я наткнулся на работу коллеги про Fast Commits, которая пытается соптимизировать fsync в EXT4 в Linux уже несколько лет, и, кажется, у этого дела виднеется свет в конце тунеля. Также получили на USENIX ATC 2024 best paper award https://www.usenix.org/conference/atc24/presentation/shirwadkar

fsync в EXT4 работает через алгоритм JBD2 (Journaling Block Device v2), который хранит последние операции работы с диском и применяет их, гарантируя, что всё корректно применится даже в случае отказа машинки. Первый инсайт, который я узнал -- всё это дело происходит раз в 5 секунд и при каждом вызове fsync.

Второй инсайт, что JBD2 хранит минимум 3 блока по 4kb на каждую операцию: блок дескриптора (метаданные о других блоках в коммите), по крайней мере один измененный блок метаданных и блок маркера коммита, указывающий конец коммита. Метаданные о дополнительных блоках нужны в интересных случаях, когда, например, машинка умерла, при загрузке она начнёт восстаналивать данные и потом она во время этого умирает. Идемпотентность можно только гарантировать с помощью сравнения изменений, поэтому JBD2 имеет чуть бОльший оверхед, чем возможно представляют себе люди. Из-за маркера коммита получается, что JBD2 делает минимум 2 операции с диском, что тоже немного неожиданно.

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

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

Как можно догадаться, даже такая простая идея заняла около 6 лет, чтобы протащить в ядро. Очень много уделялось времени обратной совместимости, а также что делать со сложными операциями, например, filesystem resize, которые обязаны уйти в старый JBD2 и как теперь работать с обоими журналами.

В целом на бенчмарках экономия в 100-200 микросекунд, что для частых fsync собирается в неплохую историю. Для HDD это не такие большие цифры, а вот с развитием SSD это уже значительно. Включить на linux это дело можно через tune2fs -O fast_commit.

BY Experimental chill


Warning: Undefined variable $i in /var/www/group-telegram/post.php on line 260

Share with your friend now:
group-telegram.com/experimentalchill/277

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

It is unclear who runs the account, although Russia's official Ministry of Foreign Affairs Twitter account promoted the Telegram channel on Saturday and claimed it was operated by "a group of experts & journalists." On December 23rd, 2020, Pavel Durov posted to his channel that the company would need to start generating revenue. In early 2021, he added that any advertising on the platform would not use user data for targeting, and that it would be focused on “large one-to-many channels.” He pledged that ads would be “non-intrusive” and that most users would simply not notice any change. "Someone posing as a Ukrainian citizen just joins the chat and starts spreading misinformation, or gathers data, like the location of shelters," Tsekhanovska said, noting how false messages have urged Ukrainians to turn off their phones at a specific time of night, citing cybersafety. "We're seeing really dramatic moves, and it's all really tied to Ukraine right now, and in a secondary way, in terms of interest rates," Octavio Marenzi, CEO of Opimas, told Yahoo Finance Live on Thursday. "This war in Ukraine is going to give the Fed the ammunition, the cover that it needs, to not raise interest rates too quickly. And I think Jay Powell is a very tepid sort of inflation fighter and he's not going to do as much as he needs to do to get that under control. And this seems like an excuse to kick the can further down the road still and not do too much too soon." Following this, Sebi, in an order passed in January 2022, established that the administrators of a Telegram channel having a large subscriber base enticed the subscribers to act upon recommendations that were circulated by those administrators on the channel, leading to significant price and volume impact in various scrips.
from ye


Telegram Experimental chill
FROM American