Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
В Линаксе в 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 раза. Так что у кого будет подобный кейс, можете также попробовать возможности файловых систем из Линакса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 19:06 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
Забыл написать, что у меня 4-ех ядерный процессор i5-4690 (без гипертрейдинга), поэтому чтение данных с диска во всех трех экспериментах выполнялось 4- мя параллельными потоками (а главный 5-ый поток ждал их завершения). Другими словами, не было свободного ядра, которое могло использоваться для автоматического разжатия данных "на лету". + Текстовые файлы имеют большой размер (примерно по 300 Мбайт каждый), поэтому полученное ускорение нельзя отнести к более хорошей работе с файлами маленького размера. Ускорение получилось именно за счет сжатия файлов на диске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 19:43 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
Для этого не обязательно форматировать устройство под btrfs. Библиотека zlib портирована на все языки и ты мог читать текстовые файлы не доставая их из архива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 20:16 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
AlekseySQLСкорость чтения текстовых файлов: 74 сек Размер двоичных данных: 4 ГБ54 МБ/с ? Вы уверены, что это SSD, а не HDD 20-летней давности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 20:58 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
maytonДля этого не обязательно форматировать устройство под btrfs. Библиотека zlib портирована на все языки и ты мог читать текстовые файлы не доставая их из архива. Зачем делать то, что ОС делает за меня? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 21:00 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
miksoftAlekseySQLСкорость чтения текстовых файлов: 74 сек Размер двоичных данных: 4 ГБ54 МБ/с ? Вы уверены, что это SSD, а не HDD 20-летней давности? Проверялась скорость чтения ТЕКСТОВЫХ данных, их размер значительно больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 21:01 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
AlekseySQLmiksoftпропущено... 54 МБ/с ? Вы уверены, что это SSD, а не HDD 20-летней давности? Проверялась скорость чтения ТЕКСТОВЫХ данных, их размер значительно больше.Тогда что означают эти 4 ГБ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 21:08 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
miksoftAlekseySQLпропущено... Проверялась скорость чтения ТЕКСТОВЫХ данных, их размер значительно больше.Тогда что означают эти 4 ГБ ? Размер бинарных данных приведен только для оценки степени их сжатия: не сжатые они занимают 6,8 ГБайт, а для разных способов сжатия- 3,2 и 4 Гбайт. Кстати, если по чесноку, то у меня не чистое чтение тексовых файлов: прочитанные строки парсились, а значения преобразовывались в числовые форматы. Структуры с полученными числовыми данными складывались в мой массив. Так что есть небольшой оверхед при операциях чтения текстовых данных. Поэтому при 2,5- кратном уменьшении размера данных, получить 2-ух кратное увеличение скорости можно, если операция разархивирования практически не занимала процессорного времени. Т.е. можно попробовать еще поднять степерь сжатия, получив прирост производительности чтения. Но это я уже буду тестить только на бинарных данных: мне важна скорость именно их чтения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 21:23 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
AlekseySQLmiksoftпропущено... 54 МБ/с ? Вы уверены, что это SSD, а не HDD 20-летней давности? Проверялась скорость чтения ТЕКСТОВЫХ данных, их размер значительно больше. Я тебе даже больше скажу. Старые ФС поддерживали sparse-files. Это не архивация а просто логическая аллокация файлов большого размера при том что они физически не занимают места. Это удобно при закачке сериалов торрентами. При этом на замерах скорости чтения или записи можно получить фейк. Скорость чтения данных со шпинделя и логическая скорость с которой ФС отдаёт блоки могут отличаться на порядки. С твоими текстовыми файлами тоже может быть чудо. В зависимости от того что за данные внутри. А с БТРФС - не ошибись. Ее создавали для других дел. Главный поинт - отказ от LVM. С ней менеджер томов нахер не нужен. Сама файловая система является таковым. И также copy-on-write. И опции бекапирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 23:09 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
"Линакс" клево звучит. Почти как "Тампакс". DoubleSpace ни о чем не говорит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 23:17 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
SiemarglDoubleSpace ни о чем не говорит?А до него был Stacker... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2018, 00:27 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
Есть еще более клёвая штука - ZFS Для понимания: Руководство по администрированию файловых систем ZFS Solaris ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2018, 01:33 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
rdb_devЕсть еще более клёвая штука - ZFS Для понимания: Руководство по администрированию файловых систем ZFS Solaris Да, выбирая из сжимающий ФС читал и про ZFS, но народ пишет, что для нее надо много оперативки. К тому же поддержка ZFS в Ubuntu появилась только в версии 16.04, т.е. решению всего два года, и у меня нет времени работать бета- тестером. Siemargl "Линакс" клево звучит. Почти как "Тампакс". Действительно, шутка затянулась. Теперь буду писать Linux. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2018, 07:19 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
Кстати, когда я приводил показатели сжатия lzo и zlib для бинарных файлов, то подразумевал те файлы, которые уже предварительно сжаты моим алгоритмом на повторяющиеся значения. Другими словами, использовалось двойное сжатие: сначала моим алгоритмом, а потом с помощью ФС. Сегодня поставил эксперимент по сжатию с помощью lzo структур, которые не проходили предварительной обработки моим алгоритмом сжатия и получил более хорошие показатели сжатия lzo: Нет сжатия: Исходный размер НЕсжатых двоичных данных: 16,3 ГБ Исходный размер сжатых двоичных данных: 6,8 ГБ Сжатие lzo: Размер НЕсжатых двоичных данных: 6 ГБ Размер НЕсжатых двоичных данных: 4 ГБ Видно, что применение моего алгоритма сжатия пока оправдано: итоговый размер файлов становится меньше в полтора раза: К = 6 / 4 = 1,5 Но если учесть дополнительное время необходимое на "разжатие" моим алгоритмом, то возможно все плюсы сойдут на нет. Другими словами, возможно применение возможностей ФС уберет из моего кода лишние алгоритмы без потери скорости чтения бинарных данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2018, 07:33 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
maytonAlekseySQLпропущено... Проверялась скорость чтения ТЕКСТОВЫХ данных, их размер значительно больше. Я тебе даже больше скажу. Старые ФС поддерживали sparse-files. Это не архивация а просто логическая аллокация файлов большого размера при том что они физически не занимают места.... Это было в Симпсонах все есть в NTFS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2018, 07:42 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
Чел - фанат пингвина. Я так думаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2018, 11:17 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
maytonЧел - фанат пингвина. Я так думаю.Так себе фанат, не знает, что btrfs никогда не рекомендовалась для production и уже deprecated и будет удалена из промлинуксов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2018, 11:39 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
maytonЧел - фанат пингвина. Ну с кем не бывает :) Другое дело, что топик к C++ не имеет никакого отношения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2018, 12:25 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
NekZ, Он пришел поделится идеей. Тут сложно классифицировать. Пусть сам расскажет о теме C++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2018, 12:53 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
maytonДля этого не обязательно форматировать устройство под btrfs. Библиотека zlib портирована на все языки и ты мог читать текстовые файлы не доставая их из архива. Я, кстати, обдумывал вопрос использовать zip- архивирование "на лету". Но, к сожалению, в Qt нет работы с zip- архивами, поэтому решение получается не кросплатформенное. При использовании btrfs оно конечно тоже не кроссплатформенное, но получается "на халяву", поэтому "карман не тянет". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2018, 08:22 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
AlekseySQLНо, к сожалению, в Qt нет работы с zip- архивами, поэтому решение получается не кросплатформенное. У тебя - странное понимание кроссплатформенности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2018, 08:47 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
AlekseySQLmaytonДля этого не обязательно форматировать устройство под btrfs. Библиотека zlib портирована на все языки и ты мог читать текстовые файлы не доставая их из архива. Я, кстати, обдумывал вопрос использовать zip- архивирование "на лету". Но, к сожалению, в Qt нет работы с zip- архивами, поэтому решение получается не кросплатформенное. При использовании btrfs оно конечно тоже не кроссплатформенное, но получается "на халяву", поэтому "карман не тянет".Какое отношение QT имеет к файлам, сжатым алгоритмом ZIP? Если, по какой-то причине, религия не позволяет использовать функции библиотеки zlib, что мешает дергать 7-zip утилиту CLI для всех своих хотелок? Вполне возможно, что на официальном сайте 7-zip есть библиотека и описание её API. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2018, 10:27 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
rdb_devВполне возможноТолько не "вполне возможно", а LZMA SDK - штатная загрузка с дремучих времён. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2018, 10:47 |
|
||
|
Ускорение чтение с диска с помощью BtrFS
|
|||
|---|---|---|---|
|
#18+
Мда, после 20+ лет разработки, с легкой подачи, zlib вдруг перестала быть кроссплатформенной =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2018, 10:50 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=18&tid=2017832]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
75ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 177ms |

| 0 / 0 |
