Сохранение лога ресурсоемкого процесса
От: Akai  
Дата: 22.06.04 20:08
Оценка:
Товарищи !
Есть следующая проблема:

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

Требуется: сохранять лог в файл без ущерба для скорости работы процесса

Решения, которые пришли мне в голову:
1. Хранить лог в виртуальной памяти и сохранять при выходе неприемлемо, т.к. довольно велика вероятность аварийного завершения процесса.
2. Открывать и закрывать файл для каждой записи в отдельности — медленно.
3. Можно создать объект ядра "файл" и писать туда при помощи WriteFile, но не хотелось бы тормозить процесс до завершения функции. Асинхронная запись через WriteFile не подходит, так как нужна совместимость с Win9x.
4. Создать проекцию файла с флагом PAGE_READWRITE, спроецировать на адресное пространство и писать туда, чтобы Win сама сохраняла изменения на HDD, когда представится такая возможность.

Верны ли мои рассуждения ? Даст ли последний вариант выигрыш в производительности ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.