Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ускорение чтение с диска с помощью BtrFS / 25 сообщений из 30, страница 1 из 2
11.06.2018, 19:06
    #39659512
AlekseySQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
В Линаксе в 2012 году зафиксировали стандарты хранения данных у "новой" файловой системы BtrFS. Одной из возможностей ФС является сжатие данных "на лету" при чтении / записи. Так как в своем проекте я уткнулся в скорость I/O, то решил попробовать эту возможность. На SSD диске это будет иметь двойную выгоду: сэкономит место + ускорит чтение данных. Мои текстовые файлы представляют из себя csv- файлы, с данными разделенными ';', а бинарные- последовательно записанные структуры данных с полями числовых типов.

Нет сжатия:
Исходный размер текстовых файлов: 37,2 ГБ
Скорость чтения текстовых файлов: 136 сек
Исходный размер двоичных данных: 6,8 ГБ

Сжатие zlib:
Размер текстовых файлов: 8,8 ГБ
Скорость чтения текстовых файлов: 99 сек
Размер двоичных данных: 3,2 ГБ

Сжатие lzo:
Размер текстовых файлов: 14 ГБ
Скорость чтения текстовых файлов: 74 сек
Размер двоичных данных: 4 ГБ

Сейчас уже появился новый метод сжатия ZSTD с возможностью установки числового коэффициента сжатия. Я его пока не тестировал, но думаю, что с его помощью можно добиться еще большей скорости чтения данных. Но даже сейчас видно, что размер на диске сокращается примерно в 2,5 раза, а скорость чтения возрастает примерно в 2 раза.

Так что у кого будет подобный кейс, можете также попробовать возможности файловых систем из Линакса.
...
Рейтинг: 0 / 0
11.06.2018, 19:43
    #39659519
AlekseySQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
Забыл написать, что у меня 4-ех ядерный процессор i5-4690 (без гипертрейдинга), поэтому чтение данных с диска во всех трех экспериментах выполнялось 4- мя параллельными потоками (а главный 5-ый поток ждал их завершения). Другими словами, не было свободного ядра, которое могло использоваться для автоматического разжатия данных "на лету".

+ Текстовые файлы имеют большой размер (примерно по 300 Мбайт каждый), поэтому полученное ускорение нельзя отнести к более хорошей работе с файлами маленького размера. Ускорение получилось именно за счет сжатия файлов на диске.
...
Рейтинг: 0 / 0
11.06.2018, 20:16
    #39659523
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
Для этого не обязательно форматировать устройство под btrfs. Библиотека zlib портирована на все языки и ты мог читать текстовые файлы не доставая их из архива.
...
Рейтинг: 0 / 0
11.06.2018, 20:58
    #39659531
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
AlekseySQLСкорость чтения текстовых файлов: 74 сек
Размер двоичных данных: 4 ГБ54 МБ/с ? Вы уверены, что это SSD, а не HDD 20-летней давности?
...
Рейтинг: 0 / 0
11.06.2018, 21:00
    #39659532
AlekseySQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
maytonДля этого не обязательно форматировать устройство под btrfs. Библиотека zlib портирована на все языки и ты мог читать текстовые файлы не доставая их из архива.

Зачем делать то, что ОС делает за меня?
...
Рейтинг: 0 / 0
11.06.2018, 21:01
    #39659533
AlekseySQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
miksoftAlekseySQLСкорость чтения текстовых файлов: 74 сек
Размер двоичных данных: 4 ГБ54 МБ/с ? Вы уверены, что это SSD, а не HDD 20-летней давности?

Проверялась скорость чтения ТЕКСТОВЫХ данных, их размер значительно больше.
...
Рейтинг: 0 / 0
11.06.2018, 21:08
    #39659535
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
AlekseySQLmiksoftпропущено...
54 МБ/с ? Вы уверены, что это SSD, а не HDD 20-летней давности?

Проверялась скорость чтения ТЕКСТОВЫХ данных, их размер значительно больше.Тогда что означают эти 4 ГБ ?
...
Рейтинг: 0 / 0
11.06.2018, 21:23
    #39659536
AlekseySQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
miksoftAlekseySQLпропущено...
Проверялась скорость чтения ТЕКСТОВЫХ данных, их размер значительно больше.Тогда что означают эти 4 ГБ ?

Размер бинарных данных приведен только для оценки степени их сжатия: не сжатые они занимают 6,8 ГБайт, а для разных способов сжатия- 3,2 и 4 Гбайт.

Кстати, если по чесноку, то у меня не чистое чтение тексовых файлов: прочитанные строки парсились, а значения преобразовывались в числовые форматы. Структуры с полученными числовыми данными складывались в мой массив. Так что есть небольшой оверхед при операциях чтения текстовых данных. Поэтому при 2,5- кратном уменьшении размера данных, получить 2-ух кратное увеличение скорости можно, если операция разархивирования практически не занимала процессорного времени. Т.е. можно попробовать еще поднять степерь сжатия, получив прирост производительности чтения.

Но это я уже буду тестить только на бинарных данных: мне важна скорость именно их чтения.
...
Рейтинг: 0 / 0
11.06.2018, 23:09
    #39659553
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
AlekseySQLmiksoftпропущено...
54 МБ/с ? Вы уверены, что это SSD, а не HDD 20-летней давности?

Проверялась скорость чтения ТЕКСТОВЫХ данных, их размер значительно больше.
Я тебе даже больше скажу. Старые ФС поддерживали sparse-files. Это не архивация
а просто логическая аллокация файлов большого размера при том что они физически
не занимают места. Это удобно при закачке сериалов торрентами. При этом на замерах
скорости чтения или записи можно получить фейк. Скорость чтения данных со шпинделя
и логическая скорость с которой ФС отдаёт блоки могут отличаться на порядки.

С твоими текстовыми файлами тоже может быть чудо. В зависимости от того что за данные
внутри.

А с БТРФС - не ошибись. Ее создавали для других дел. Главный поинт - отказ от LVM.
С ней менеджер томов нахер не нужен. Сама файловая система является таковым.
И также copy-on-write. И опции бекапирования.
...
Рейтинг: 0 / 0
11.06.2018, 23:17
    #39659555
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
"Линакс" клево звучит. Почти как "Тампакс".

DoubleSpace ни о чем не говорит?
...
Рейтинг: 0 / 0
12.06.2018, 00:27
    #39659564
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
SiemarglDoubleSpace ни о чем не говорит?А до него был Stacker...
...
Рейтинг: 0 / 0
12.06.2018, 01:33
    #39659569
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
Есть еще более клёвая штука - ZFS

Для понимания:
Руководство по администрированию файловых систем ZFS Solaris
...
Рейтинг: 0 / 0
12.06.2018, 07:19
    #39659579
AlekseySQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
rdb_devЕсть еще более клёвая штука - ZFS
Для понимания:
Руководство по администрированию файловых систем ZFS Solaris

Да, выбирая из сжимающий ФС читал и про ZFS, но народ пишет, что для нее надо много оперативки. К тому же поддержка ZFS в Ubuntu появилась только в версии 16.04, т.е. решению всего два года, и у меня нет времени работать бета- тестером.

Siemargl "Линакс" клево звучит. Почти как "Тампакс".

Действительно, шутка затянулась. Теперь буду писать Linux.
...
Рейтинг: 0 / 0
12.06.2018, 07:33
    #39659580
AlekseySQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
Кстати, когда я приводил показатели сжатия lzo и zlib для бинарных файлов, то подразумевал те файлы, которые уже предварительно сжаты моим алгоритмом на повторяющиеся значения. Другими словами, использовалось двойное сжатие: сначала моим алгоритмом, а потом с помощью ФС. Сегодня поставил эксперимент по сжатию с помощью lzo структур, которые не проходили предварительной обработки моим алгоритмом сжатия и получил более хорошие показатели сжатия lzo:

Нет сжатия:
Исходный размер НЕсжатых двоичных данных: 16,3 ГБ
Исходный размер сжатых двоичных данных: 6,8 ГБ

Сжатие lzo:
Размер НЕсжатых двоичных данных: 6 ГБ
Размер НЕсжатых двоичных данных: 4 ГБ

Видно, что применение моего алгоритма сжатия пока оправдано: итоговый размер файлов становится меньше в полтора раза:
К = 6 / 4 = 1,5

Но если учесть дополнительное время необходимое на "разжатие" моим алгоритмом, то возможно все плюсы сойдут на нет. Другими словами, возможно применение возможностей ФС уберет из моего кода лишние алгоритмы без потери скорости чтения бинарных данных.
...
Рейтинг: 0 / 0
12.06.2018, 07:42
    #39659581
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
maytonAlekseySQLпропущено...


Проверялась скорость чтения ТЕКСТОВЫХ данных, их размер значительно больше.
Я тебе даже больше скажу. Старые ФС поддерживали sparse-files. Это не архивация
а просто логическая аллокация файлов большого размера при том что они физически
не занимают места....
Это было в Симпсонах все есть в NTFS.
...
Рейтинг: 0 / 0
12.06.2018, 11:17
    #39659635
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
Чел - фанат пингвина. Я так думаю.
...
Рейтинг: 0 / 0
12.06.2018, 11:39
    #39659642
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
maytonЧел - фанат пингвина. Я так думаю.Так себе фанат, не знает, что btrfs никогда не рекомендовалась для production и уже deprecated и будет удалена из промлинуксов.
...
Рейтинг: 0 / 0
12.06.2018, 12:25
    #39659659
NekZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
maytonЧел - фанат пингвина.
Ну с кем не бывает :)

Другое дело, что топик к C++ не имеет никакого отношения.
...
Рейтинг: 0 / 0
12.06.2018, 12:53
    #39659666
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
NekZ,

Он пришел поделится идеей. Тут сложно классифицировать. Пусть сам расскажет о теме C++.
...
Рейтинг: 0 / 0
13.06.2018, 08:22
    #39659999
AlekseySQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
maytonДля этого не обязательно форматировать устройство под btrfs. Библиотека zlib портирована на все языки и ты мог читать текстовые файлы не доставая их из архива.

Я, кстати, обдумывал вопрос использовать zip- архивирование "на лету". Но, к сожалению, в Qt нет работы с zip- архивами, поэтому решение получается не кросплатформенное. При использовании btrfs оно конечно тоже не кроссплатформенное, но получается "на халяву", поэтому "карман не тянет".
...
Рейтинг: 0 / 0
13.06.2018, 08:47
    #39660012
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
AlekseySQLНо, к сожалению, в Qt нет работы с zip- архивами, поэтому решение получается не кросплатформенное.
У тебя - странное понимание кроссплатформенности.
...
Рейтинг: 0 / 0
13.06.2018, 10:27
    #39660086
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
AlekseySQLmaytonДля этого не обязательно форматировать устройство под btrfs. Библиотека zlib портирована на все языки и ты мог читать текстовые файлы не доставая их из архива.

Я, кстати, обдумывал вопрос использовать zip- архивирование "на лету". Но, к сожалению, в Qt нет работы с zip- архивами, поэтому решение получается не кросплатформенное. При использовании btrfs оно конечно тоже не кроссплатформенное, но получается "на халяву", поэтому "карман не тянет".Какое отношение QT имеет к файлам, сжатым алгоритмом ZIP? Если, по какой-то причине, религия не позволяет использовать функции библиотеки zlib, что мешает дергать 7-zip утилиту CLI для всех своих хотелок? Вполне возможно, что на официальном сайте 7-zip есть библиотека и описание её API.
...
Рейтинг: 0 / 0
13.06.2018, 10:47
    #39660104
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
rdb_devВполне возможноТолько не "вполне возможно", а LZMA SDK - штатная загрузка с дремучих времён.
...
Рейтинг: 0 / 0
13.06.2018, 10:50
    #39660109
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
Мда, после 20+ лет разработки, с легкой подачи, zlib вдруг перестала быть кроссплатформенной =)
...
Рейтинг: 0 / 0
13.06.2018, 11:07
    #39660124
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение чтение с диска с помощью BtrFS
Он имел в виду - кросс-Qt шный.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ускорение чтение с диска с помощью BtrFS / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]