Сообщение Re[10]: Что требуется в РФ сегодня от 14.09.2021 7:53
Изменено 14.09.2021 8:00 lpd
Re[10]: Что требуется в РФ сегодня
Здравствуйте, Reset, Вы писали:
S>>и логи при креше часто не успевают записаться на диск
R>Делаешь mmap'ed файл и пишешь в эту память как в циклический буфер.
В чем выигрыш?
Можно использовать обычный write(), затем fflush() чтобы libc скинуло кеш в ядро, и, если нужно, fsync() чтобы ядро сбросило свои страницы на диск. После этого данные будут на диске и сохранятся при креше системы. В большинстве случаев этого достаточно.
R>Можно журнал сбрасывать на диск принудительно, если нужно быстрее, но опять же это будет делаться асинхронно, т.е. приложение не будет ждать.
Асинхронный fsync() хотели добавить в linux, но насколько мне известно пока это не сделано.
S>>и логи при креше часто не успевают записаться на диск
R>Делаешь mmap'ed файл и пишешь в эту память как в циклический буфер.
В чем выигрыш?
Можно использовать обычный write(), затем fflush() чтобы libc скинуло кеш в ядро, и, если нужно, fsync() чтобы ядро сбросило свои страницы на диск. После этого данные будут на диске и сохранятся при креше системы. В большинстве случаев этого достаточно.
R>Можно журнал сбрасывать на диск принудительно, если нужно быстрее, но опять же это будет делаться асинхронно, т.е. приложение не будет ждать.
Асинхронный fsync() хотели добавить в linux, но насколько мне известно пока это не сделано.
Re[10]: Что требуется в РФ сегодня
Здравствуйте, Reset, Вы писали:
S>>и логи при креше часто не успевают записаться на диск
R>Делаешь mmap'ed файл и пишешь в эту память как в циклический буфер.
В чем выигрыш?
Можно использовать обычный write(), затем fflush() чтобы libc скинуло кеш в ядро, и, если нужно, fsync() чтобы ядро сбросило свои страницы на диск. После этого данные будут на диске и сохранятся при креше системы. В большинстве случаев этого достаточно.
При использовании mmap() просто не нужен fflush(), для гарантии записи все равно нужен msync().
R>Можно журнал сбрасывать на диск принудительно, если нужно быстрее, но опять же это будет делаться асинхронно, т.е. приложение не будет ждать.
Асинхронный fsync() хотели добавить в linux, но насколько мне известно пока это не сделано.
S>>и логи при креше часто не успевают записаться на диск
R>Делаешь mmap'ed файл и пишешь в эту память как в циклический буфер.
В чем выигрыш?
Можно использовать обычный write(), затем fflush() чтобы libc скинуло кеш в ядро, и, если нужно, fsync() чтобы ядро сбросило свои страницы на диск. После этого данные будут на диске и сохранятся при креше системы. В большинстве случаев этого достаточно.
При использовании mmap() просто не нужен fflush(), для гарантии записи все равно нужен msync().
R>Можно журнал сбрасывать на диск принудительно, если нужно быстрее, но опять же это будет делаться асинхронно, т.е. приложение не будет ждать.
Асинхронный fsync() хотели добавить в linux, но насколько мне известно пока это не сделано.