Каковы последствия записи больших объемов данных на диск с использованием небуферизованного файлового ввода-вывода (по крайней мере для всего, что выше уровня операционной системы)?
Подробности:
Я пишу сценарий Ruby, который выполнит другой фрагмент кода, захватит его stdout и stderr и запишет их в файл.Очевидно (по крайней мере в Ruby), stderr не буферизирован, а stdout буферизован, что в моем случае приводит к выходу из строя в порядке, поскольку строки stderr печатаются перед некоторыми строками stdout.
Кажется, решение состоит в том, чтобы заставить эту часть кода использовать небуферизованный ввод-вывод (с IO.sync = true
).Тем не менее, фрагмент кода, который выполняет мой скрипт, также будет записывать большое количество текста на диск.Поэтому мне интересно, каковы последствия неиспользования буфера Ruby (только буфер ОС и ниже), и, если это важно, как еще я могу обойти проблему упорядочения?