27
Одиннадцатая независимая научно- практическая конференция «Разработка ПО 2015» 22 - 24 октября, Москва К.Кринкин, Н.Плохой Сжатие данных на блочном уровне в Linux ”За и против” СПбГЭТУ “ЛЭТИ”

Block-level compression in Linux. Pro et contra

  • Upload
    osll

  • View
    695

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Block-level compression in Linux. Pro et contra

Одиннадцатая независимая научно-практическая конференция «Разработка ПО 2015»22 - 24 октября, Москва

К.Кринкин, Н.Плохой

Сжатие данных на блочном уровне в Linux”За и против”

СПбГЭТУ “ЛЭТИ”

Page 2: Block-level compression in Linux. Pro et contra

2

Мотивация● большой размер файлов с “сырыми“ данными

● требуется on-line сжатие без потерь

● необходима независимость от ФС

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

Сценарий: однократная запись, множественное чтение

Page 3: Block-level compression in Linux. Pro et contra

3

Задачи● Оценить возможности для компрессии

блочного уровня в Linux

● Качественно сравнить file-level и block-level сжатие

● Подобрать алгоритмы сжатия блоков

● Разработать схему трансляции

Page 4: Block-level compression in Linux. Pro et contra

4

Блочный ввод-вывод в Linux

(с) www.thomas-krenn.com

ФС

DM

BLK-IO

BLK-DEVS

Page 5: Block-level compression in Linux. Pro et contra

5

Существующие работы

● Th. Makatos et al. ZBD – compressed block device, 2010-2012

● Y. Klonatos et al. Azor (HDD/SDD compression scheme), 2011

● Y. Cao et al. Block level memory compression, 2015

Page 6: Block-level compression in Linux. Pro et contra

6

Проблемы сжатия блоков

● Разный размер после сжатия

● Не все блоки нужно сжимать

● Требуется уровень трансляции

● Увеличение количества ввода-вывода (read-before-write)

● Фрагментация данных на диске

Page 7: Block-level compression in Linux. Pro et contra

7

Архитектура I/O

App

FS

Buffers cache

Block compression

Ph.disk

user

kernel

© см. [1]

Log->ph read XTload

balancedecomp

Read

load balance

compressMap

and store XTWrite ph

Write

Page 8: Block-level compression in Linux. Pro et contra

8

Трансляция блоков: extents

1st header

free offset blk num blk sz comp. data

free space

next blk

blk num blk sz comp. datanext blk

blk num. . .

Page 9: Block-level compression in Linux. Pro et contra

9

Трансляция блоков: упаковка

Ph.disk

1/4 1/4 1/4 1/4 1/2 1/2 1/1

meta

физические блоки

упаковка

логические блоки

Page 10: Block-level compression in Linux. Pro et contra

10

Координатное пространство

NL → {Nph,P}

Где:– NL – логический номер блока

– Nph – физический номер блока

– P – позиция внутри физического блока

Nph

0 1 2 3

NL

P:

Page 11: Block-level compression in Linux. Pro et contra

11

Статическая разметка диска

Ph.diskсвободно

занято

метаданные

. . .

блоки х1 блоки х2 блоки х4 фикс. размер

Page 12: Block-level compression in Linux. Pro et contra

12

Динамическая разметка диска*

Ph.disk

свободно

x4 метаданные

. . .

фикс. размер

x2

x1

Page 13: Block-level compression in Linux. Pro et contra

13

Device Mapper

dm-device

Logical VolumeBIOs

Logical/Physical Volume

BIOs

BIOs

BIOs

Page 14: Block-level compression in Linux. Pro et contra

14

Device mapper iface

dm_target: dm_dev

/device-mapper.h#L124

Page 15: Block-level compression in Linux. Pro et contra

15

Компрессоры: степень сжатия

Page 16: Block-level compression in Linux. Pro et contra

16

Компрессоры: время сжатия

Page 17: Block-level compression in Linux. Pro et contra

17

Подключение компрессоров

● in kernel

● Shared memory + User space daemon

Page 18: Block-level compression in Linux. Pro et contra

18

In-kernel compressor

App

FS

Buffers cache

Block compression

Ph.disk

user

kernel

compression module

compression buffer

Page 19: Block-level compression in Linux. Pro et contra

19

User space compressor

App

FS

Buffers cache

Block compression

Ph.disk

user

kernel

compression daemon

comp. buffer

comp xcomp xcomp x

Shared memory Pluggablecompressors

Page 20: Block-level compression in Linux. Pro et contra

20

Сжатие блоков: “за” и “против”● За:

– прозрачное увеличение дискового пространства

– лучшая (по сравнению с ФС) гранулярность объектов сжатия

– скорость доступа*

● Против:– фрагментация*

– затраты на хранение мета информации

– отсутствие интеграции с ФС

Page 21: Block-level compression in Linux. Pro et contra

21

Развитие● Балансировка нагрузки

● Тестирование производительности (HDD, SSD)

● Эффективное кэширование

● Использование аппаратного ускорения сжатия

Page 22: Block-level compression in Linux. Pro et contra

22

Источники[1] Y. Klonatos et al. Transparent Online Storage Compression at the Block-Level. ACM Trans. Storage 8, 2, Article 5 (May 2012)

[2] ZBD: Using Transparent Compression at the Block Level to Increase Storage Space Efficiency // 2010 International Workshop on Storage Network Architecture and Parallel I/Os

● [3] Y. Cao Flexible Memory: A Novel Main Memory Architecture with Block-level Memory Compression // Networking, Architecture and Storage (NAS), 2015 IEEE International Conference on

[4] www.thomas-krenn.com

Page 23: Block-level compression in Linux. Pro et contra

23

Вопросы?

Кирилл Кринкин[email protected]

Page 24: Block-level compression in Linux. Pro et contra

24

запасные слайды

Page 25: Block-level compression in Linux. Pro et contra

25

Intel DEFLATEVinodh Gopal et al. High Performance DEFLATE Compression on Intel ® Architecture Processors (igzip library) Nov 2011

Page 26: Block-level compression in Linux. Pro et contra

26

Возможности для компрессии

Page 27: Block-level compression in Linux. Pro et contra

27

Уровень BIOs