bzip2 খুব ধীর। একাধিক কোর উপলব্ধ


31

আমি এই আদেশটি চালাচ্ছি:

pg_dumpall | bzip2 > cluster-$(date --iso).sql.bz2

এটি খুব দীর্ঘ সময় নেয়। আমি সঙ্গে প্রক্রিয়া তাকান top। Bzip2 প্রক্রিয়াটি প্রায় 95% নেয় এবং একটি কোরের 5% পোস্টগ্র্যাস করে। waএন্ট্রি কম। এর অর্থ এই যে ডিস্কটি কোনও বাধা নয়।

পারফরম্যান্স বাড়ানোর জন্য আমি কী করতে পারি?

সম্ভবত bzip2 আরও বেশি কোর ব্যবহার করুন। সার্ভারে 16 টি কোর রয়েছে।

বা bzip2 এর বিকল্প ব্যবহার করবেন?

পারফরম্যান্স বাড়ানোর জন্য আমি কী করতে পারি?


8
উত্তরাধিকারগত কারণে যদি আপনার bzip2 এর প্রয়োজন না হয় তবে আমার ব্যক্তিগত অভিজ্ঞতা হয়েছে যে xz bzip2 এর চেয়ে আরও বেশি সংক্ষেপণ / সময় দেয়। আপনি যদি নতুন পর্যাপ্ত কোনও প্রোগ্রাম পান তবে এটি থ্রেডও করা হয়েছে এবং এটি আপনাকে যা চান তার উপর নির্ভর করে জিজিপিশ থেকে বৃহত্তর পর্যন্ত সময় এবং মেমরির ব্যবহার করতে দেয়।
পারকিনস

6
"পিগজ" আরেকটি বিকল্প - এটি bzip2 আউটপুটের চেয়ে gzip আউটপুট উত্পাদন করে। এবং মূলত সবকিছু জিজিপ বোঝে।
ক্রিগগি

আপনি এটি bzip2 সংক্ষেপণের সাথে GnuPG- এর সাথে প্রতিসম আকারে এনক্রিপ্ট করার চেষ্টা করতে পারেন; এটি কেবল সংক্ষেপণের সাথে তুলনায় আশ্চর্যজনকভাবে দ্রুত বলে মনে হয়, কিছু অজানা কারণে এমনকি সর্বোচ্চ সংক্ষেপণের স্তরের সাথেও। এটি সম্ভব যে অ্যালগরিদমটি আমার নিয়মিত সংক্ষেপণ প্রোগ্রামের দক্ষতার চেয়ে দ্রুততর হতে পারে যা জিইউআই ভিত্তিক।
শুলে

2
আপনি আপনার বিকল্প অ্যালগরিদমের প্রয়োজনীয়তা বর্ণনা করেন নি। Bzip2 বিভক্ত হয়। এটা কি আপনার কাছে গুরুত্বপূর্ণ?
মার্টিন স্মিথ

7
" পারফরম্যান্স বাড়াতে আমি কী করতে পারি? " - এটি সংকুচিত করবেন না? আপনি আসলে এটি বলবেন না যে আপনার এটি সংকুচিত হওয়া দরকার এবং না করা-করা সবসময় করা-কাজের চেয়ে দ্রুত। ডিস্কটি বাধা তৈরি করুন।
TessellatingHecler 10-18

উত্তর:


49

চারপাশে অনেকগুলি সংক্ষেপণ অ্যালগরিদম রয়েছে এবং bzip2এটি ধীর গতির মধ্যে একটি। সমতল gzipসাধারণত উল্লেখযোগ্যভাবে দ্রুত হতে থাকে, সাধারণত খুব কম সংকোচনের নয়। গতি যখন সবচেয়ে গুরুত্বপূর্ণ তখন lzopআমার প্রিয় is দুর্বল সংক্ষেপণ, তবে ওহ এত তাড়াতাড়ি।

আমি কিছু মজা করার এবং তাদের সমান্তরাল বাস্তবায়ন সহ কয়েকটি অ্যালগরিদমের তুলনা করার সিদ্ধান্ত নিয়েছি। ইনপুট ফাইলটি pg_dumpallআমার ওয়ার্কস্টেশন-এ 1913 এমবি এসকিউএল ফাইলের কমান্ডের আউটপুট । হার্ডওয়্যারটি পুরানো কোয়াড-কোর আই 5। সময়গুলি কেবল সংকোচনের দেয়াল-ঘড়ির সময়। সমান্তরাল বাস্তবায়নগুলি সমস্ত 4 টি কোর ব্যবহারের জন্য সেট করা আছে। সংক্ষেপণের গতি অনুসারে সারণি সাজানো।

Algorithm     Compressed size        Compression          Decompression

lzop           398MB    20.8%      4.2s    455.6MB/s     3.1s    617.3MB/s
lz4            416MB    21.7%      4.5s    424.2MB/s     1.6s   1181.3MB/s
brotli (q0)    307MB    16.1%      7.3s    262.1MB/s     4.9s    390.5MB/s
brotli (q1)    234MB    12.2%      8.7s    220.0MB/s     4.9s    390.5MB/s
zstd           266MB    13.9%     11.9s    161.1MB/s     3.5s    539.5MB/s
pigz (x4)      232MB    12.1%     13.1s    146.1MB/s     4.2s    455.6MB/s
gzip           232MB    12.1%     39.1s     48.9MB/s     9.2s    208.0MB/s
lbzip2 (x4)    188MB     9.9%     42.0s     45.6MB/s    13.2s    144.9MB/s
pbzip2 (x4)    189MB     9.9%    117.5s     16.3MB/s    20.1s     95.2MB/s
bzip2          189MB     9.9%    273.4s      7.0MB/s    42.8s     44.7MB/s
pixz (x4)      132MB     6.9%    456.3s      4.2MB/s     7.9s    242.2MB/s
xz             132MB     6.9%   1027.8s      1.9MB/s    17.3s    110.6MB/s
brotli (q11)   141MB     7.4%   4979.2s      0.4MB/s     3.6s    531.6MB/s

যদি আপনার সার্ভারের 16 টি কোরগুলি নিখরচায় থাকে যে সমস্তগুলি সংক্ষেপণের জন্য ব্যবহার করা যেতে পারে pbzip2তবে সম্ভবত আপনাকে একটি খুব তাড়াতাড়ি গতিবেগ দেবে। তবে আপনার এখনও আরও গতি প্রয়োজন এবং আপনি 20% বড় ফাইল সহ্য করতে পারেন gzipএটি সম্ভবত আপনার সেরা বাজি।

আপডেট: আমি brotliটেবিলে ফলাফল যুক্ত করেছি (TOOGAMs এর উত্তর দেখুন)। brotliতাই আমি তিনটি সেটিংস যোগ গুলি কম্প্রেশন গুণমানের সেটিং, কম্প্রেশন অনুপাত এবং গতির উপর একটি খুব বড় প্রভাব রয়েছে ( q0, q1, এবং q11)। ডিফল্টটি হ'ল q11তবে এটি অত্যন্ত ধীর এবং এর থেকেও খারাপ xzq1যদিও খুব ভাল দেখাচ্ছে; হিসাবে একই সংকোচনের অনুপাত gzip, কিন্তু 4-5 গুণ হিসাবে দ্রুত!

আপডেট:lbzip2 টেবিলটিতে যুক্ত (দ্যুতি মন্তব্য দেখুন) এবং zstd(জনি এর মন্তব্য), এবং এটি সংক্ষেপণের গতি অনুসারে বাছাই। দারুণ সংকোচনের অনুপাতের চেয়ে তিনগুণ দ্রুত সংকোচনের lbzip2মাধ্যমে bzip2পরিবারকে দৌড়ের পথে ফিরিয়ে দেয় pbzip2! zstdযুক্তিসঙ্গত দেখায় তবে brotli (q1)অনুপাত এবং গতি উভয়ই পরাজিত হয় ।

আমার মূল উপসংহারটি যে প্লেইনটি gzipসেরা বেট তা প্রায় নির্বোধ দেখাচ্ছে is যদিও সর্বব্যাপীতার জন্য, এখনও এটি বীট করা যায় না;)


1
আরও অনেক অ্যালগরিদম সহ একই ধরণের টেবিলের জন্য, mattmahoney.net/dc/text.html দেখুন
দুগল

1
@ ডুগল ফেয়ার যথেষ্ট। আমার পরীক্ষাটি ওপি হিসাবে ( pg_dumpallআউটপুট) হিসাবে একই ধরণের ডেটাতে রয়েছে , সুতরাং এটি সম্ভবত কিছুটা বেশি প্রতিনিধি :)
মার্সেলেম

1
zstd হ'ল টেবিল থেকে নিখোঁজ - আমাদের লগ ফাইলগুলি সংকুচিত করার জন্য, আমি দেখতে পেলাম যে একটি একক কোর zstd প্রক্রিয়া তুলনীয় সংক্ষেপণ অনুপাতের সাথে 16 কোর pbzip2 ছাড়িয়ে যায়।
জনি 6

1
lz4সামান্য দ্রুত এবং lzopউপায় দ্বারা, তুলনায় আরও দক্ষ । এটি এম্বেড থাকা সিস্টেমে প্রাসঙ্গিক হলেও এটি আরও র‌্যাম ব্যবহার করে।
ড্যানিয়েল বি

1
আপনি যদি একাধিক-থ্রেড সংস্করণ পরীক্ষা করতে ইচ্ছুক হন তবে zstd -T4আপনিও চেষ্টা করতে পারেন। খুব দ্রুত সেটিংসের জন্য, আপনি ডিফল্ট zstd -T4 -1হিসাবে এটি চেষ্টা করতে পারেন , সম্ভবত এটিই আপনি পরীক্ষিত সেটিংস। zstd-3
সায়ান

37

Pbzip2 ব্যবহার করুন।

ম্যানুয়াল বলেছেন:

pbzip2 হল bzip2 ব্লক-বাছাই করা ফাইল সংক্ষিপ্তকারীর একটি সমান্তরাল বাস্তবায়ন যা pthreads ব্যবহার করে এবং এসএমপি মেশিনে লিনিয়ার স্পিডআপের কাছাকাছি অর্জন করে। এই সংস্করণটির আউটপুট bzip2 v1.0.2 বা আরও নতুন (যেমন: pbzip2 দিয়ে সংকুচিত যে কোনও কিছুকে bzip2 দিয়ে সংকুচিত করা যেতে পারে) সাথে সম্পূর্ণ সুসংগত।

এটি আপনার কাছে থাকা প্রসেসরের সংখ্যা স্বয়ংক্রিয়ভাবে শনাক্ত করে এবং সে অনুযায়ী থ্রেড তৈরি করে।


এটি ঠিক আছে যদি আপনি একটি ফাইল সংকুচিত করছেন তবে এটি একটি পাইপের মাধ্যমে মারাত্মকভাবে কাজ করে
ক্যামেলসিসি

@camelccc আপনি কেন তা বলছেন? আমি বিষয়টি মোটেও খুঁজে পাই না। আপনি একটি দ্রুত প্রযোজক বা অনুকূল পারফরম্যান্সের জন্য এটা সামনে পাইপের উপর বৃহৎ বাফার প্রয়োজন, কিন্তু যে সমানভাবে সত্য pixzএবং pigzএকটি নল উপর হিসাবে ভাল।
মাইকেল - sqlbot

তিনি কতটা সংকুচিত করছেন তা নির্ভর করে। আপনি যদি বলেন যে আপনার কাছে যদি বড় বাফার থাকে তবে এটি ঠিক আছে, আপনি যদি শারীরিক ভেড়ার চেয়ে অনেক বড় কিছু পাইপ করেন তবে আমি পেয়েছি যে জিনিসগুলি আরও আকর্ষণীয় হয়ে উঠতে পারে। আপনি সম্ভবত যে কোনও সংক্ষেপণ অ্যালগরিদমের জন্য সত্য বলেছেন।
ক্যামেলসিসি

4
bzip2 মোটামুটি র‌্যাম ব্যবহার করতে পারে, সুতরাং এক সাথে 16 বিজিপ কর্মী চালানো 1 জিবি-র চেয়ে বেশি তুচ্ছ র‌্যাম ব্যবহার করতে পারে। বিটিডাব্লু, lbzip2মনে হয় এর চেয়ে ভাল গতি, মেমরির ব্যবহার এবং প্রান্তিকরূপে আরও ভাল সংক্ষেপণ pbzip2। এখানে মাপদণ্ড রয়েছে: vbtechsupport.com/1614
gmatht

@gmatht lbzip2দেখতে সুন্দর! আমি আমার উত্তরে এটি যুক্ত করেছি :)
মার্সেলেম

8

আপনি কোনও অপারেটিং সিস্টেমের কথা উল্লেখ করেন নি। উইন্ডোজ যদি, জেডস্ট্যান্ডার্ড (রিলিজ) সহ 7-জিপ 7-জিপের একটি সংস্করণ যা এই সমস্ত অ্যালগোরিদম ব্যবহারের জন্য সমর্থন সরবরাহ করার জন্য সংশোধিত হয়েছে।


আকর্ষণীয়, আমি এর brotliআগে শুনেছিলাম , কিন্তু আমি এটি সম্পর্কে ভুলে গিয়েছিলাম। আমি আমার উত্তরে এটি বেঞ্চমার্কের টেবিলে যুক্ত করেছি! গুণমানের সেটিং 1 ব্যতীত আমি এটির কার্য সম্পাদনে আসলেই কিছুটা হতাশ ছিলাম যেখানে এটি gzipআরও বেশি গতির মতো একই সংকোচনের অনুপাত সরবরাহ করেছিল ।
মার্সেলেম

2

Zstd ব্যবহার করুন । এটি যদি ফেসবুকের পক্ষে যথেষ্ট ভাল হয় তবে এটি সম্ভবত আপনার পক্ষেও যথেষ্ট ভাল।

আরও গুরুতর নোটে, এটি আসলে বেশ ভাল । আমি এখনই এটি সমস্ত কিছুর জন্য ব্যবহার করি কারণ এটি কেবলমাত্র কাজ করে, এবং এটি আপনাকে বৃহত পরিমাণে অনুপাতের জন্য গতি বাণিজ্য করতে দেয় (বেশিরভাগ ক্ষেত্রে, গতি মাপের চেয়েও বেশি গুরুত্বপূর্ণ যেহেতু স্টোরেজ সস্তা, তবে গতি একটি বাধা)।
সংক্ষিপ্ত স্তরে যা bzip2 হিসাবে তুলনামূলক সামগ্রিক সংক্ষেপণ অর্জন করে, এটি উল্লেখযোগ্যভাবে দ্রুত এবং আপনি যদি সিপিইউ সময়ে কিছু অতিরিক্ত অর্থ দিতে ইচ্ছুক হন তবে আপনি প্রায় LZMA এর মতো ফলাফল অর্জন করতে পারেন (তবে এটি bzip2 এর চেয়ে ধীর হবে)। খুব কম সংকোচনের অনুপাতগুলিতে, এটি bzip2 বা অন্য কোনও মূলধারার বিকল্পের চেয়ে অনেক বেশি দ্রুত।

এখন, আপনি একটি এসকিউএল ডাম্প সংকোচন করছেন যা সংকোচনের জন্য ঠিক যতটা বিব্রতকরভাবে তুচ্ছ। এমনকি দরিদ্রতম সংকোচকারীরা সেই ধরণের ডেটাতে ভাল স্কোর করে।
সুতরাং আপনি zstdএকটি নিম্ন সংক্ষেপণ স্তরের সাথে দৌড়াতে পারেন যা কয়েকগুণ দ্রুত গতিতে চলবে এবং এখনও সেই ডেটাতে একই পরিমাণে 95-99% অর্জন করবে।

বোনাস হিসাবে, আপনি যদি এটি প্রায়শই করছেন এবং কিছু অতিরিক্ত সময় বিনিয়োগ করতে চান, আপনি zstdসময়ের আগে সংক্ষেপককে "প্রশিক্ষণ" দিতে পারেন , যা সংক্ষেপণের অনুপাত এবং গতি উভয়ই বাড়িয়ে তোলে। নোট করুন যে ভালভাবে কাজ করার প্রশিক্ষণের জন্য, আপনাকে এটি পুরো জিনিসটি নয়, স্বতন্ত্র রেকর্ডগুলি খাওয়ানো হবে। যেভাবে সরঞ্জামটি কাজ করে, প্রশিক্ষণের জন্য এটি অনেকগুলি ছোট এবং কিছুটা অনুরূপ নমুনার প্রত্যাশা করে, একটি বিশাল অঙ্কুর নয়।


আরও ভাল, মাল্টিকোর মেশিনে pzstd (সমান্তরাল সংস্করণ) ব্যবহার করুন
borowis

1

দেখে মনে হচ্ছে ব্লকের আকার সামঞ্জস্য করার (কমিয়ে দেওয়া) সংক্ষেপণের সময় উল্লেখযোগ্য প্রভাব ফেলতে পারে।

আমি আমার মেশিনে যে পরীক্ষাটি করেছিলাম তার কয়েকটি ফলাফল এখানে। timeআদেশটি কার্যকর করার সময়টি পরিমাপ করার জন্য ব্যবহার করেছি । input.txtএকটি 250 ডলার টেক্সট ফাইল যা নির্বিচারে জসন রেকর্ড ধারণ করে।

ডিফল্ট (বৃহত্তম) ব্লক আকার ব্যবহার করে ( --bestকেবলমাত্র ডিফল্ট আচরণ নির্বাচন করে):

# time cat input.txt | bzip2 --best > input-compressed-best.txt.bz

real    0m48.918s
user    0m48.397s
sys     0m0.767s

ক্ষুদ্রতম ব্লকের আকার ( --fastযুক্তি) ব্যবহার করে :

# time cat input.txt | bzip2 --fast > input-compressed-fast.txt.bz

real    0m33.859s
user    0m33.571s
sys     0m0.741s

এই কিছুটা অবাক করা আবিষ্কার ছিল, বিবেচনা করে যে ডকুমেন্টেশন বলেছেন:

সংক্ষিপ্তকরণ এবং ডিকম্প্রেশন গতি ব্লক আকার দ্বারা কার্যত অবিচ্ছিন্ন


আমার বর্তমান প্রিয় pbzip2। আপনিও কি এই চেষ্টা করেছেন? এই প্রশ্নটি এমন একটি পরিবেশ সম্পর্কে যেখানে 16 টি কোর উপলব্ধ।
গুয়েতলি

@ গুয়েতলি দুর্ভাগ্যক্রমে আমাকে বিজিপ ধরে রাখতে হবে। আমি এটি হ্যাডোপ কাজের জন্য ব্যবহার করছি এবং বিজিপ সেখানে অন্তর্নির্মিত সংকোচনের মধ্যে একটি। সুতরাং একটি উপায়ে এটি ইতিমধ্যে সমান্তরাল।
জাকুব কুকুল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.