Чи зможе використання компресії диска на сучасній системі покращити загальну продуктивність?


10

Здається, що на деякий час збільшення процесора перевищило швидкість диска. Якщо припустити, що робочий стіл чи ноутбук із сучасним двоядерним процесором Intel / AMD та одним середнім диском SATA, чи вдасться зробити компресію на більшості всіх дисків? В основному зменшена пропускна здатність диска більше, ніж компенсує збільшене завантаження процесора? Я впевнений, що справжня відповідь - це "залежить від того, що ти робиш". Задаючи це запитання, я сподіваюсь, що хтось, хто зробив цю трубу, наводить кілька прикладів або підводних каменів.


визначити продуктивність? Як у збільшенні швидкості чи збільшенні простору? Ви, мабуть, не помітили жодного збільшення швидкості, але, безумовно, знайдете запасні байти корисними! :-p
Крістофер Лайтфут

Відповіді:


9

Так, стиснення диска може забезпечити кращі показники роботи за певних обставин:

  • Ваша програма обмежена пропускною здатністю диска: сучасні процесори та алгоритми стиснення (де) стиснення можуть працювати на набагато більшій пропускній здатності, ніж сучасні диски при тривалих передачах. Будь-яке зменшення обсягу даних, що переміщуються на дискові плати або з них, є виграшним у цій обставині
  • Для (де) стиснення даних, які збираються на дисках, потрібно менше часу, ніж різниця в часі передачі, і у вас є запасні цикли процесора

Існує причина, що і ZFS, і Btrfs, обидві останні конструкції зеленого поля, містять положення для стиснення.

У просторі HPC, коли програма перевіряє точку з пам'яті на диск, центральні процесори часто взагалі нічого не роблять. Цей час по суті є чистою головою. Будь-яке використання процесорів для скорочення цього часу - виграш.


Мережеві диски з потоковими передачами - це, мабуть, єдине місце, де переваги трапляються, оскільки розмір шматка досить великий. Стандартні диски ОС * завжди будуть вражати.
Ryaner

5
Потокове передавання медіа не є переконливим додатком для стиснення рівня системи зберігання. Дані вже повинні стискатися у набагато кращому форматі, застосованому до програми.
Філ Міллер

5

Стиснення диска ніколи не дасть вам кращої продуктивності.

Можливо, ви не отримаєте майже жодного штрафу через швидкі сучасні процесори, але це зовсім інша річ.

Ви припускаєте, що передача менше даних з / на диск може підвищити продуктивність; але великі передачі даних майже ніколи не є вузьким місцем: справжні вузькі місця - це пошук часу та затримки. Сучасні жорсткі диски дійсно швидкі при постійній передачі даних з великими файлами, що сповільнює їх - це невеликі передачі з усього диска.

Деякі сценарії:

  • Медіафайли. Вони, як правило, вже стискаються самостійно (JPEG, MPEG, MP3), тому стискання їх на рівні файлової системи взагалі не допоможе; це замість цього погіршить речі, оскільки ресурси CPU вже потрібні для їх кодування / декодування.
  • Бази даних. Вони, як правило, читаються з / записуються в невеликі випадкові спалахи, тому стиснення їх не тільки не матиме користі, але й погіршить продуктивність, оскільки СУБД не може правильно визначити, де на диску знаходяться фізичні дані, до яких потрібно отримати доступ. зберігається.
  • Файл сторінки. Зазвичай це досить багато, але ОС потребує адреси дуже маленьких фрагментів даних про нього, і робити це потрібно дуже точно ("Прочитати 4K за фізичною адресою X"); стиснення його зазвичай неможливо, але навіть якби воно було, це було б повним марнуванням часу та ресурсів: воно забезпечило б майже нульове стиснення, завдяки природі цього файлу "повних випадкових даних".

1
Тож передача менше даних з диска не приносить користі?
kbyrd

Відредаговано, щоб відповісти, що :-)
Массімо

3
ніколи не є дуже вузьким словом. Сира пропускна здатність з диска і через шину PCI часто є вузьким місцем, де я виконую деякі роботи. Стиснення може значно допомогти продуктивності, особливо якщо ви вже вжили заходів щодо усунення деяких інших вузьких місць, про які ви згадали
JamesRyan

1
Я б також вагався сказати "ніколи". Цілком можуть бути сценарії, коли пропускна здатність диска є вузьким місцем. Але ви, мабуть, правильні, що це не типовий випадок.
sleske

2
диск i / o майже завжди є вузьким місцем у базах даних
Нік Кавадіас

3

Існують конкретні ситуації, які роблять це вже на рівні додатків, наприклад стиснення відео - система, яка не змогла прочитати сире відео з високою якістю HD досить швидко з dsk, може замість цього прочитати стиснуту інформацію та розширити її за допомогою пам'яті та потужності процесора . Немає причин, що це не могло б бути і у інших, конкретних ситуаціях, але це можна найкраще вирішити на рівні програми, так що використовувані методи стиснення оптимізовані відповідно до їх призначення.

Майте на увазі, що ефективність накладних витрат на декомпресію доцільна, якщо вся пропускна здатність збільшується, тому ідея не повинна бути відхилена від руки - я не думаю, що ми готові до загальної мети, що підвищує ефективність стиснення, але це теоретично можливо торгувати ресурсом, у якого у вас є зайвий ресурс (процесор і пам'ять), для підвищення в іншому місці (загальні дані, прочитані з жорсткого диска)


3

Ви відповіли на власне запитання! це залежить - це справді відповідь.

Найкраще, що я можу зробити, це:

Якщо у вас є додаток до бази даних, який обмежений для читання з дисків , то так! продуктивність краща.

Я не думаю, що це стосується більшості заходів, які ви будете робити на робочому столі / ноутбуці.

У своєму домені (SQL Server) я знаю, що бази даних звітів під великими навантаженнями для читання можуть отримати кращу ефективність, якщо використовується стиснення. Я знаю, що це саме стосується і mysql.

Microsoft має білий документ про свої функції стиснення в SQL Server 2008. Не зовсім легке зчитування, якщо не DBA, але ось одна діаграма, яка підтримує моє узагальнення:

alt текст


0

Швидкість процесора завжди була швидшою, ніж швидкість диска. IMHO, стиснення збільшить накладні витрати і тим самим знизить продуктивність.


але це залежить від того, що ти робиш :-)
Джош,

Як так? Збільшений накладний - збільшений накладний. Ви не можете купувати гроші, витрачаючи гроші (якщо тільки це не підроблені гроші, але це вже інша історія).
Марк Хендерсон

Функція стиснення та декомпресії файлів, незалежно від того, зменшуються вони чи ні внаслідок стиснення, сприятиме підвищенню продуктивності. Коли файл зчитується з диска в пам'ять, його потрібно декомпресувати. Коли це записано з пам'яті на диск, його потрібно стиснути.
joeqwerty

3
але якщо ваш процесор сидить, не роблячи нічого, і пропускна здатність диска - це вузьке місце, ваш процесор в кінцевому підсумку зробить більше роботи, але загальна продуктивність збільшиться. Це дійсно залежить від того, який тип даних ви відновляєте, і що ви з ними робите.
JamesRyan

0

Я читав щось подібне до цього вчора щодо OSX, і це стиснення файлової системи - в основному відповідь обертається навколо того, що ви хочете стиснути - у цьому прикладі він говорить про дані "FAT"; структури файлів, властивості, метадані та ін., які, зберігаючи разом, можна стиснути, щоб заощадити простір та прочитати на процесор швидше, ніж шукати голову всюди, щоб знайти дані для кожного файлу ...

У будь-якому разі, варто прочитати, якщо ти думаєш про такі речі :-p

Але стиснення стосується не лише економії місця на диску. Це також класичний приклад торгівлі циклами процесора для зменшення затримки вводу / виводу та пропускної здатності. За останні кілька десятиліть продуктивність процесора покращилась (а обчислювальні ресурси були багатішими - про це пізніше) набагато швидше, ніж продуктивність диска зросла. Сучасний час пошуку жорсткого диска і затримки обертання все ще вимірюються в мілісекундах. За одну мілісекунд процесор 2 ГГц проходить через два мільйони циклів. І тоді, звичайно, ще потрібно врахувати фактичний час передачі даних.

Зрозуміло, кілька рівнів кешування в ОС та апаратних засобах потужно працюють, щоб приховати ці затримки. Але ці біти повинні зійти з диска в якийсь момент, щоб заповнити ці кеші. Стиснення означає, що потрібно перенести менше бітів. Зважаючи на майже комічну перенасиченість ресурсів процесора на сучасному багатоядерному Mac при нормальному використанні, загальний час, необхідний для перенесення стисненого корисного навантаження з диска та використання ЦП для декомпресії його вмісту в пам'ять, як правило, буде набагато менше часу знадобиться передача даних у нестисненому вигляді.

Це пояснює потенційні переваги продуктивності передачі меншої кількості даних, але використання розширених атрибутів для зберігання вмісту файлів може насправді зробити все швидше. Це все стосується локалізації даних.

Якщо є одна річ, яка сповільнює жорсткий диск більше, ніж передача великої кількості даних, це переміщення головки з однієї частини диска в іншу. Кожен хід означає час, коли голова почне рухатися, потім зупиниться, потім переконайтесь, що вона правильно розміщена над потрібним місцем, а потім дочекайтеся, коли крутячий диск помістить потрібні біти під неї. Це все реальні, фізичні, рухомі частини, і дивно, що вони танцюють так само швидко і ефективно, як і вони, але фізика має свої межі. Ці рухи - справжні вбивці для ротаційного зберігання, як жорсткі диски.

Формат тома HFS + зберігає всю свою інформацію про файли - метадані - у двох основних місцях на диску: Каталог-файл, який зберігає дати файлів, дозволи, права власності та безліч інших речей, а також файл атрибутів, який зберігає "названі вилки" . "

Розширені атрибути в HFS + реалізуються як названі вилки у файлі атрибутів. Але на відміну від вилок ресурсів, які можуть бути дуже великими (до максимального розміру файлу, що підтримується файловою системою), розширені атрибути в HFS + зберігаються "вбудованим" у файлі атрибутів. На практиці це означає обмеження близько 128 байт на атрибут. Але це також означає, що головка диска не потребує поїздки в іншу частину диска, щоб отримати фактичні дані.

Як ви можете собі уявити, до блоків дисків, що складають файли каталогу та атрибутів, часто доступний, і тому швидше за все десь знаходиться в кеші. Все це має змогу зробити повне збереження файлу, включаючи як його метадані у своїх даних, у файлах каталогу та атрибутів, структурованих B-деревом, загальну виграш у продуктивності. Навіть восьмибайтовий корисний набір балонів на 25 байт не викликає занепокоєння, якщо він все-таки менший за розмір блоку виділення для нормального зберігання даних і доки він все вміщується у вузолі дерева B у файлі атрибутів, ОС все одно має читати в повному обсязі.

Є й інші вагомі внески до зменшення сліду диска Snow Leopard (наприклад, видалення зайвих локалізацій та файлів "designable.nib"), але стиснення HFS + є на сьогодні найбільш технічно цікавим.

Від: http://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars/3


Я раніше про це думав, але саме ця стаття підштовхнула мене до цього питання.
kbyrd

Лол. Цікаво :-p
Christopher Lightfoot

0

Стиснення диска Microsoft - це некрасиво СТАРО. Це навряд чи можна порівняти зі співвідношенням методів ARJ з 80-х років. Але навіть компресія Майкрософт може забезпечити кращу продуктивність на дуже повільних (ноутбукових) жорстких дисках. Особливо, якщо достатньо оперативної пам'яті для кешування записів та запобігання надмірному запису.

Процес запису є слабким місцем будь-якого методу стиснення з довільним доступом.

Отже, якщо ви хочете стислий диск, вам краще перейти на якийсь Linux.

Стиснення диска також дуже підходить для оперативної пам'яті, не потрібно говорити, чому.


1
Чи можете ви додати якісь підтримуючі дані, можливо порівняння продуктивності між рішеннями Windows та Linux?
psarossy

Так, якщо ти збираєшся обрізати 3,5-річну нитку, то краще запропонувати нові, важкі факти.
MDMarra

-1

Сумнівно. Стиснення та декомпресія охоплює більше, ніж просто диск і процесор; зокрема, буде багато передачі даних у пам'ять і з неї (крім стандартної накладної передачі без стиснення), що дійсно зашкодить з точки зору помилок сторінки.


-1

Якщо коротко, ні, ви, мабуть, не наберетеся в продуктивності.

Хоча стиснення покращить продуктивність вашого сховища, воно значно погіршить швидкість роботи процесора. Це, ймовірно, зводиться до того, який тип файлів ви збираєтеся декомпресувати. Якщо ви маєте справу лише з word, excel та іншими основними типами файлів, тоді продовжуйте їх і стискайте. Якщо окремі файли об’ємніше, ви збираєтеся принести в жертву більше свого часу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.