* [devel] Файлы
@ 2009-10-15 16:25 Kharitonov A. Dmitry
2009-10-15 16:31 ` Max Ivanov
2009-10-16 5:33 ` Ildar Mulyukov
0 siblings, 2 replies; 4+ messages in thread
From: Kharitonov A. Dmitry @ 2009-10-15 16:25 UTC (permalink / raw)
To: ALT Linux Team development discussions
Max Ivanov wrote:
>> Из-за кеширования записи ошибка часто обнаруживается только при закрытии
>> файла, когда сделать уже мало чего можно (выводимые данные уже уничтожены --
>> обычно файл закрывают в самом конце программы), и это классическая проблема,
>> которую разрешить не все умеют, по этому и не проверяют.
>>
>
> А как её правильно разрешать? Научите.
>
Универсальный способ -- выводить небольшими порциями с частым закрытием
файла. Но этот способ имеет очень низкую производительность.
Из С есть много способов, среди которых изменение параметров
кеширования: можно сообщить ядру стратегию кеширования (как часто будет
происходить запись и вероятность сброса кеша), порядок обработки очереди
на запись, вид очереди на запись, приоретет записи; принудительный сброс
кеша; изменение приоритета приложения и банальная проверка свободного
места перед открытием файла.
Считается, что решить проблему так же помогает использование отображения
файла в память, вместо обычного открытия, но я в этом как-то сомневаюсь.
А вам это нужно чисто теоретически? или есть какая-то проблема?
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [devel] Файлы
2009-10-15 16:25 [devel] Файлы Kharitonov A. Dmitry
@ 2009-10-15 16:31 ` Max Ivanov
2009-10-16 5:33 ` Ildar Mulyukov
1 sibling, 0 replies; 4+ messages in thread
From: Max Ivanov @ 2009-10-15 16:31 UTC (permalink / raw)
To: ALT Linux Team development discussions
> А вам это нужно чисто теоретически? или есть какая-то проблема?
Спасибо! :) просто для расширения кругозора. Где-то с полгода назад с
lkml по-моему читал ругань по поводу ext4, мол никто не проверяет
fclose, сами буратины и т.д. И тогда же возник вопрос мол, а что толку
то с fclose, данные до закрытия fclose никто всё равно хранить не
будет, да некому вопрос задать было :)
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [devel] Файлы
2009-10-15 16:25 [devel] Файлы Kharitonov A. Dmitry
2009-10-15 16:31 ` Max Ivanov
@ 2009-10-16 5:33 ` Ildar Mulyukov
2009-10-16 13:58 ` Kharitonov A. Dmitry
1 sibling, 1 reply; 4+ messages in thread
From: Ildar Mulyukov @ 2009-10-16 5:33 UTC (permalink / raw)
To: devel
On 15.10.2009 22:25:26, Kharitonov A. Dmitry wrote:
> Max Ivanov wrote:
>>> Из-за кеширования записи ошибка часто обнаруживается только при
>>> закрытии
>>> файла, когда сделать уже мало чего можно (выводимые данные уже
>>> уничтожены --
>>> обычно файл закрывают в самом конце программы), и это классическая
>>> проблема,
>>> которую разрешить не все умеют, по этому и не проверяют.
>>>
>>
>> А как её правильно разрешать? Научите.
>>
> Универсальный способ -- выводить небольшими порциями с частым
> закрытием файла. Но этот способ имеет очень низкую производительность.
Извините, а fsync() - не то?
--
Ildar
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [devel] Файлы
2009-10-16 5:33 ` Ildar Mulyukov
@ 2009-10-16 13:58 ` Kharitonov A. Dmitry
0 siblings, 0 replies; 4+ messages in thread
From: Kharitonov A. Dmitry @ 2009-10-16 13:58 UTC (permalink / raw)
To: ALT Linux Team development discussions
Ildar Mulyukov wrote:
> On 15.10.2009 22:25:26, Kharitonov A. Dmitry wrote:
>> Max Ivanov wrote:
>>>> Из-за кеширования записи ошибка часто обнаруживается только при
>>>> закрытии
>>>> файла, когда сделать уже мало чего можно (выводимые данные уже
>>>> уничтожены --
>>>> обычно файл закрывают в самом конце программы), и это классическая
>>>> проблема,
>>>> которую разрешить не все умеют, по этому и не проверяют.
>>>>
>>>
>>> А как её правильно разрешать? Научите.
>>>
>> Универсальный способ -- выводить небольшими порциями с частым
>> закрытием файла. Но этот способ имеет очень низкую производительность.
>
> Извините, а fsync() - не то?
Это я далее по тексту назвал принудительным сбросом кеша. В случае чего
по ней можно вовремя отловить ошибку ввода-вывода. Но это тоже сильно
тормозит программу, тк выход из вызова ядра происходит только после
окончания сброса те программа будет блокирована на неопределённое время
(очень долго).
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-10-16 13:58 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-10-15 16:25 [devel] Файлы Kharitonov A. Dmitry
2009-10-15 16:31 ` Max Ivanov
2009-10-16 5:33 ` Ildar Mulyukov
2009-10-16 13:58 ` Kharitonov A. Dmitry
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git