মাল্টি-কোর সংক্ষেপণ সরঞ্জাম


61

উবুন্টুতে কী সংক্ষেপণের সরঞ্জামগুলি উপলভ্য যা মাল্টি-কোর সিপিইউ থেকে উপকৃত হতে পারে।


কেবল রেকর্ডের জন্য, একটি বিকল্প সমান্তরালভাবে স্বাধীন সংরক্ষণাগার তৈরি করা হতে পারে। সুতরাং myfiles.8core.xz তৈরির পরিবর্তে, আপনি সমান্তরালভাবে myfiles8.xz থেকে myfiles1.xz তৈরি করেন। এর জন্য প্রেরণ এজেন্টের প্রয়োজন হবে। উভয় পদ্ধতির পরিপূরক উপকারিতা এবং কনস রয়েছে।
একিউম্যানাস

2
কেবল আমার 8 টি কোর ব্যবহার করছে না তা খুঁজে পেতে bzip2 ব্যবহার করে 7 জিবি ফাইলটি আনজিপ করার চেষ্টা করেছি। এটি পড়ুন এবং pbzip2 চেষ্টা করার সিদ্ধান্ত নিয়েছে। এখনও একটি কোর উপর চলমান। তারপরে আমি মন্তব্যগুলি লক্ষ্য করেছি যে pbzip2 কেবল নিজেরাই সংকুচিত ফাইলগুলির ডিকম্প্রেশনকে পুরোপুরি সমান্তরাল করতে পারে। একই মন্তব্যে পরামর্শ দেওয়া হয়েছে যে lbzip2 যে কোনও bz2 ফাইলের সাথে পুরোপুরি সমান্তরাল করতে পারে যা সত্যই সত্য ছিল - আমার সমস্ত কোরগুলির প্রায় সম্পূর্ণ ব্যবহার (সিপিইউয়ের 80-90%) তৈরি হয়েছিল এবং এটি দ্রুততরভাবে সঙ্কুচিত হয়ে গেছে।
এডি বাইস

উত্তর:


34

দুটি প্রধান সরঞ্জাম আছে। lbzip2এবং pbzip2। এগুলি মূলত bzip2 সংক্ষেপকগুলির বিভিন্ন বাস্তবায়ন। আমি তাদের তুলনা করেছি (আউটপুট একটি পরিপাটি সংস্করণ তবে আপনার আদেশগুলি চালাতে সক্ষম হওয়া উচিত)

cd /dev/shm  # we do all of this in RAM!
dd if=/dev/urandom of=bigfile bs=1024 count=102400

$ lbzip2 -zk bigfile 
Time: 0m3.596s
Size: 105335428 

$ pbzip2 -zk bigfile
Time: 0m5.738s6
Size: 10532460

lbzip2এলোমেলো ডেটাতে বিজয়ী বলে মনে হচ্ছে। এটি সামান্য কম সংকুচিত তবে অনেক দ্রুত। YMMV।


5
একটি অঙ্ক মত দেখায় থেকে pbzip2 সাইজ অনুপস্থিত
ওয়েন ওয়াকার

4
/dev/urandomসংশ্লেষের সরঞ্জামগুলির জন্য বেঞ্চমার্কিং সরঞ্জামগুলির জন্য ইনপুটগুলির দুর্দান্ত পছন্দ নয়, যেহেতু সংজ্ঞা অনুসারে, এলোমেলো ডেটা হয় omp এটি আংশিকভাবে ব্যাখ্যা করে যে উভয় ক্ষেত্রেই কেন আউটপুট ফাইল ইনপুটটির চেয়ে 450MiB বড়
ali_m 14

1
দুঃখিত, আমি সত্যিই গোঁড়া হচ্ছে ব্যবহার করছি তবে সত্যিই র্যান্ডম ডাটা পারেন সুপার সংকোচনশীল হতে। আপনি 32 বিটের জন্য একটি নিখুঁত আরএনজি চাইতে এবং পেতে পারেন 00000000000000000000000000000000। এটি এলোমেলোভাবে কীভাবে কাজ করে;) আপনি যা ব্যবহার করছেন তা ব্যবহারিক গড়। এটা অসম্ভাব্য আপনি শুধু zeros একটি 100MB ফাইল তৈরি করব। এবং আপনি যা বলছেন তার চেতনার সাথে আমি একমত, আমি কেবলমাত্র "সংজ্ঞা দ্বারা" এর সাথে একমত হই না কারণ এটি সংজ্ঞা নয় (কারণ এটি সঠিক নয়)।
অলি

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

5
আমার অর্থ কোলমোগোরভ অর্থে "এলোমেলো" , যা আক্ষরিক অর্থে সংকোচনের হিসাবে সংজ্ঞায়িত হয়েছে। সংক্ষেপণের জন্য কোনও সার্বজনীন মানদণ্ড নেই যেহেতু বিভিন্ন অ্যালগরিদম বিভিন্ন ধরণের ডেটার জন্য আরও ভাল কাজ করে। একটি ভাল শুরু কেবল এটি কিছু পাঠ্য পাইপ করা যেমন উদাহরণস্বরূপ wget http://mattmahoney.net/dc/enwik8.zipউইকিপিডিয়া থেকে 96MB (21MB সংক্ষেপিত) টেক্সটটি ধরে নেওয়া। বেনমার্কগুলির আরও অনেক বিস্তৃত স্যুটের জন্য, এখানে দেখুন
ali_m

72

ঠিক আছে, কীওয়ার্ডটি সমান্তরাল ছিল । সমান্তরাল যে সমস্ত সংকোচনের সরঞ্জামগুলি অনুসন্ধান করার পরে আমি নিম্নলিখিতটি পেয়েছি:

পিএক্সজেড - প্যারালাল এক্সজেড একটি সংক্ষেপণ ইউটিলিটি যা একসাথে একাধিক কোর এবং প্রসেসরের এক ইনপুট ফাইলের বিভিন্ন অংশের এলজেডএমএ সংক্ষেপন চালনার সুবিধা গ্রহণ করে। এর প্রাথমিক লক্ষ্য হ'ল সংকোচনের অনুপাতের উপর ন্যূনতম সম্ভাব্য প্রভাব সহ কমপিশন সময়কে গতিতে সমস্ত সংস্থানকে কাজে লাগানো।

sudo apt-get install pxz

প্লাজিপ - এলজিপি হ'ল এলজেডএমএ অ্যালগরিদমের উপর ভিত্তি করে একটি লসলেস ডেটা সংক্ষেপক, খুব নিরাপদ অখণ্ডতা যাচাই এবং জিজিপ বা বিজিপ 2 এর মতো একটি ব্যবহারকারী ইন্টারফেস। Lzip gzip এর মতো প্রায় দ্রুত দ্রবীভূত হয় এবং bzip2 এর চেয়ে কম কমপ্রেস করে, যা এটি সফ্টওয়্যার বিতরণ এবং ডেটা আর্কাইভের জন্য উপযুক্ত করে তোলে।

প্লিজিপ lzip ফাইল ফর্ম্যাটটি ব্যবহার করে lzip এর একটি বহুল সমান্তরাল (বহু-থ্রেডড) সংস্করণ; প্লিজিপ দ্বারা উত্পাদিত ফাইলগুলি lzip এর সাথে সম্পূর্ণ সুসংগত।

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

sudo apt-get install plzip

পিআইজিজেড - পিগজ, যা জিজেপের সমান্তরাল বাস্তবায়ন বোঝায়, জিজেপের জন্য সম্পূর্ণরূপে কার্যকরী প্রতিস্থাপন যা ডেটা সংকুচিত করার সময় একাধিক প্রসেসর এবং একাধিক কোরের সুবিধা গ্রহণ করে।

sudo apt-get install pigz

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

sudo apt-get install pbzip2

LRZIP - একটি মাল্টিথ্রেডেড সংক্ষেপণ প্রোগ্রাম যা বড় ফাইলগুলির সাথে ব্যবহারের সময় খুব বেশি সংক্ষেপণের অনুপাত এবং গতি অর্জন করতে পারে। এটি সর্বাধিক সংক্ষেপণের জন্য zpaq এবং lzma এর সম্মিলিত সংক্ষেপণ অ্যালগরিদমগুলি, সর্বাধিক গতির জন্য lzo এবং rzip এর দীর্ঘ পরিসরের রিডানডেন্সি হ্রাস ব্যবহার করে। এটি র‌্যাম আকারের সাথে বৃদ্ধি সহ স্কেল করার জন্য ডিজাইন করা হয়েছে, আরও সংকোচনের উন্নতি করে। আকার বা গতির অপ্টিমাইজেশনের একটি পছন্দ লজমা সরবরাহ করতে পারে তার চেয়ে ভাল সংক্ষেপণের জন্য বা জিজিপের চেয়ে আরও ভাল গতি দেয় তবে bzip2 আকারের সংকোচনের মাত্রা সহ দেয়।

sudo apt-get install lrzip

একটি ছোট সংক্ষেপণ বেঞ্চমার্ক (অলি তৈরির পরীক্ষাটি ব্যবহার করে):


অরিজিনাল ফাইল সাইজ - 100 মেগাবাইট PBZIP2 - 101 এমবি (1% বড়)
PXZ - 101 এমবি (1% বড়)
PLZIP - 102 এমবি (1% বড়)
LRZIP - 101 এমবি (1% বড়)
পিআইজিজেড - 101 এমবি (1% বড়) )

একটি ছোট সংক্ষেপণ বেঞ্চমার্ক (একটি পাঠ্য ফাইল ব্যবহার করে):

মূল ফাইল ফাইল - 70 কেবি পাঠ্য ফাইল
PBZIP2 - 16.1 কেবি (23%)
পিএক্সজেড - 15.4 কেবি (22%)
PLZIP - 15.5 কেবি (22.1%)
এলআরজিআইপি - 15.3 কেবি (21.8%)
পিআইজিজেড - 17.4 কেবি (24.8%)


উদাহরণগুলি দুর্দান্ত হবে।
আর্থলেলন

@earthmeLon অলির উত্তরটি পড়ুন যা উদাহরণস্বরূপ ফাইলটি কীভাবে তৈরি করবেন তা উল্লেখ করে। তারপরে আমি যে কমান্ডগুলি ব্যবহার করেছি তা চালিয়ে যান।
লুইস আলভারাডো

আমি আশা করি এর আউটপুট আন্তঃসংযোগযোগ্য। অর্থাত্ আউটপুট উদাহরণস্বরূপ lrzipব্যবহার করে সঙ্কুচিত হতে পারে pbzip2
ভিনিতে মেনন

10

উপরের চমৎকার সংক্ষিপ্তসার ছাড়াও (ধন্যবাদ লুইস), আজকাল লোকেরা পিআইএক্সজেডকেও বিবেচনা করতে চাইতে পারে, যা এটি পুনরায় পড়া (উত্স: https://github.com/vasi/pixz - আমি দাবিগুলি যাচাই করে নি ) এর PXZ এর কিছু সুবিধা রয়েছে।

[Compared to PIXZ, PXZ has these advantages and disadvantages:]

    * Simpler code
    * Uses OpenMP instead of pthreads
    * Uses streams instead of blocks, not indexable
    * Uses temp files and doesn't combine them until the whole file is compressed, high disk/memory usage

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


যাইহোক, এটি আমার বোঝা যায় যে pixzসংরক্ষণাগারগুলি স্ট্যান্ডার্ড xzফর্ম্যাটের সাথে সামঞ্জস্য নয় , উপায় pxzহবে।
এমএক্সএক্স

5
@ এমএক্সএক্স: ফাইল ফর্ম্যাটগুলি সামঞ্জস্যপূর্ণ। সংরক্ষণাগারগুলি pixzসংক্ষেপিত করতে পারে xzএবং সংরক্ষণাগারগুলি সংক্ষেপিত xzকরতে পারে pixz। তবে কমান্ড লাইনের বিকল্পগুলি পৃথক xzএবং pixzপৃথক রয়েছে।
স্নোবল

ইনডেক্সেবল ফাইলগুলি একটি বড় জয় pixz
ostrokach

8

হালনাগাদ:

এক্সজেড ইউটিলেস v5.2.0 থেকে বহু- থ্রেডযুক্ত সংক্ষেপণ সমর্থন করে, এটি মূলত ভুলভাবে মাল্টি-থ্রেডযুক্ত সংক্ষেপণ হিসাবে নথিভুক্ত হয়েছিল।

উদাহরণ স্বরূপ: tar -cf - source | xz --threads=0 > destination.tar.xz


আপনি চালাতে পারেন export XZ_DEFAULTS="-T 0" এবং তারপরে কেবল আপনার সাধারণ টার কল কলটি ব্যবহার করতে পারেন tar cJf target.tar.xz source
স্কাই

4

lzop এছাড়াও একটি কার্যকর বিকল্প হতে পারে, যদিও এটি একক থ্রেডযুক্ত।

এটি খুব দ্রুত লেম্পেল-জিভ-ওবারহুমার সংক্ষেপণ অ্যালগরিদম ব্যবহার করে যা আমার পর্যবেক্ষণে জিজিপের চেয়ে 5-6 গুণ বেশি দ্রুত।

দ্রষ্টব্য: যদিও এটি এখনও বহু-থ্রেডযুক্ত নয়, এটি সম্ভবত 1-4 কোর সিস্টেমে পিগজকে ছাড়িয়ে যাবে। এই কারণেই এটি আপনার প্রশ্নের সরাসরি উত্তর না দিলেও আমি এটি পোস্ট করার সিদ্ধান্ত নিয়েছি। এটি ব্যবহার করে দেখুন, কেবলমাত্র একটি সিপিইউ ব্যবহার করার সময় এবং আরও খারাপটি সংকোচনের সময় এটি আপনার সিপিইউ বাটনেলেকের সমস্যার সমাধান করতে পারে। আমি প্রায়শই এটির চেয়ে ভাল সমাধান হতে দেখি যেমন, পিগজ।


ডিকম্প্রেসিংয়ে এটি কি আরও ভাল নয়? কমপ্রেসিংয়ে
জিজিপের

আমি আরও সাক্ষ্য দিতে পারি যে lzop অতি দ্রুত। প্রকক্সম ডিফল্টরূপে ভার্চুয়াল মেশিনগুলির ব্যাকআপের জন্য lzop ব্যবহার করে।
লনি সেরা

1
lz4 আরও দ্রুত (এবং এটির একটি বহু- থ্রেডযুক্ত সংস্করণ রয়েছে)।
ডেভিড বালাইচ


3

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

মেটাডেটা:

  • হার্ডওয়্যার ব্যবহৃত: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz(4 সি / 8 টি) + এনভিএম এসএসডি
  • জিএনইউ / লিনাক্স বিতরণ: Xubuntu 17.10 (artful)
  • gzip সংস্করণ: 1.6
  • pigz সংস্করণ: 2.4
  • সংকুচিত হওয়া ফাইলটি 9.25 জিবি এসকিউএল ডাম্প

gzip দ্রুত

time gzip -1kN ./db_dump.sql

real    1m22,271s
user    1m17,738s
sys     0m3,330s

gzip সেরা

time gzip -9kN ./db_dump.sql 

real    10m6,709s
user    10m2,710s
sys     0m3,828s

pigz দ্রুত

time pigz -1kMN ./db_dump.sql 

real    0m26,610s
user    1m55,389s
sys     0m6,175s

pigzসেরা (না zopfli)

time pigz -9kMN ./db_dump.sql 

real    1m54,383s
user    14m30,435s
sys     0m5,562s

pigz+ zopfliঅ্যালগরিদম

time pigz -11kMN ./db_dump.sql 

real    171m33,501s
user    1321m36,144s
sys     0m29,780s

একটি নিম্নরেখা হিসাবে আমি zopfliঅ্যালগরিদমের সুপারিশ করব না যেহেতু সংক্ষেপে ডিস্কের জায়গাটি বাদ দেওয়া হয়নি-এমন-তাত্পর্যপূর্ণ পরিমাণের জন্য কম্প্রেশনটি অমিত পরিমাণে সময় নেয়।

ফলাফল ফাইল ফাইলের আকার:

  • সেরা এস: 1309 এম
  • দ্রুত s: 1680M
  • zopfli : 1180M

2

Zstandard যেহেতু বহু-থ্রেডিং সমর্থন v1.2.0 ¹। এটি জিজিপ প্রতিস্থাপনের উদ্দেশ্যে তৈরি একটি খুব দ্রুত সংক্ষেপক এবং ডিকম্প্রেসার এবং এটি উচ্চতর স্তরে এলজেডএমএ 2 / এক্সজেড হিসাবে দক্ষ হিসাবে - যদি ভাল না হয় তবে কমপ্রেসও করতে পারে।

আপনি ব্যবহার করতে হবে ছলনাময় উৎস থেকে বা একটি নতুন রিলিজ, বা কম্পাইল সর্বশেষ সংস্করণ এই সুবিধা পাবেন। ভাগ্যক্রমে এটি অনেক নির্ভরতা টান না।

  1. Zstd এর v1.1.0 এ তৃতীয় পক্ষের pzstd ছিল।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.