Я занимаюсь большим вводом/выводом на куче SSD и обнаружил, что могу получить необходимую производительность, используя Async Read/Write с Libaio (io_uring мне не доступен). Проблема в том, что мне иногда нужно делать записи, которые не являются кратными размера страницы, а также добавляют к файлам, которые уже не растут размером блока. < /P>
Есть ли хорошая стратегия здесь? Вот некоторые вещи, о которых я думал, которые не звучат великолепно. Старые и новые данные. Затем в конце я смог подать последний блок, а затем усечь файл до желаемого размера, когда закончу. Я немного неохотно делаю это, так как ошибка в моем коде испортит конец существующего файла. тот же файл? Я мог бы написать первый неполный блок и последний неполный блок с не O_Direct FD и сделать большую среднюю с асинхронным IO. Тогда fsync? Я не уверен, что это хорошая идея. < /P>
Есть лучшие варианты? -Поджание размера данных с использованием нативного AIO:
https://wandbox.org/permlink/rz0zyuycy0xfpao0
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
template class ScopeExit {
public:
explicit ScopeExit(FuncT&& fn) : f(std::forward(fn)) {}
~ScopeExit() { f(); }
ScopeExit(const ScopeExit&) = delete;
ScopeExit& operator=(const ScopeExit&) = delete;
ScopeExit(ScopeExit&&) = delete;
ScopeExit& operator=(ScopeExit&&) = delete;
private:
FuncT f;
};
template ScopeExit(F&&) -> ScopeExit;
template long checked_syscall(long syscall_number, Args... args) {
long ret = syscall(syscall_number, args...);
if (ret < 0) {
auto error = errno;
std::cerr
Подробнее здесь: https://stackoverflow.com/questions/794 ... ith-libaio
Можно ли написать файл, который не имеет кратного размера страницы с Libaio? ⇐ Linux
1739366634
Anonymous
Я занимаюсь большим вводом/выводом на куче SSD и обнаружил, что могу получить необходимую производительность, используя Async Read/Write с Libaio (io_uring мне не доступен). Проблема в том, что мне иногда нужно делать записи, которые не являются кратными размера страницы, а также добавляют к файлам, которые уже не растут размером блока. < /P>
Есть ли хорошая стратегия здесь? Вот некоторые вещи, о которых я думал, которые не звучат великолепно. Старые и новые данные. Затем в конце я смог подать последний блок, а затем усечь файл до желаемого размера, когда закончу. Я немного неохотно делаю это, так как ошибка в моем коде испортит конец существующего файла. тот же файл? Я мог бы написать первый неполный блок и последний неполный блок с не O_Direct FD и сделать большую среднюю с асинхронным IO. Тогда fsync? Я не уверен, что это хорошая идея. < /P>
Есть лучшие варианты? -Поджание размера данных с использованием нативного AIO:
https://wandbox.org/permlink/rz0zyuycy0xfpao0
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
template class ScopeExit {
public:
explicit ScopeExit(FuncT&& fn) : f(std::forward(fn)) {}
~ScopeExit() { f(); }
ScopeExit(const ScopeExit&) = delete;
ScopeExit& operator=(const ScopeExit&) = delete;
ScopeExit(ScopeExit&&) = delete;
ScopeExit& operator=(ScopeExit&&) = delete;
private:
FuncT f;
};
template ScopeExit(F&&) -> ScopeExit;
template long checked_syscall(long syscall_number, Args... args) {
long ret = syscall(syscall_number, args...);
if (ret < 0) {
auto error = errno;
std::cerr
Подробнее здесь: [url]https://stackoverflow.com/questions/79433226/is-it-possible-to-write-a-file-that-is-not-a-multiple-of-page-size-with-libaio[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия