বিশাল সংখ্যক বড় ফাইল দ্রুত সংকুচিত করুন


16

আমার প্রায় 200 গিগাবাইট লগ ডেটা উত্পন্ন হয়, প্রায় 150 টি বিভিন্ন লগ ফাইলের মধ্যে বিতরণ করা হয়।

আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা ফাইলগুলিকে একটি অস্থায়ী স্থানে নিয়ে যায় এবং অস্থায়ী ডিরেক্টরিতে একটি টার-বিজে 2 করে।

200 গিগাবাইট লগগুলি প্রায় 12-15 জিবিতে সংকুচিত হওয়ায় আমি ভাল ফলাফল পেয়েছি।

সমস্যাটি হ'ল ফাইলগুলি সংকুচিত করতে চিরকাল লাগে। ক্রন জব দৈনন্দিন 2:30 পূর্বাহ্ণ রান ও 5 পর্যন্ত চালানোর জন্য আরো বলেছেন: 00-6: 00 অপরাহ্ণ।

সংক্ষেপণের গতি উন্নত করার এবং কাজটি দ্রুত সম্পন্ন করার কোনও উপায় আছে কি? কোন ধারনা?

অন্যান্য প্রক্রিয়া এবং সমস্ত সম্পর্কে চিন্তা করবেন না, যেখানে সংকোচনের ঘটনাটি ঘটে তা কোনও এনএএস- তে রয়েছে এবং আমি একটি উত্সাহিত ভিএম- তে NAS মাউন্ট করতে পারি এবং সেখান থেকে সংক্ষেপণ স্ক্রিপ্টটি চালাতে পারি।

এখানে রেফারেন্সের জন্য শীর্ষের আউটপুট দেওয়া হল :

top - 15:53:50 up 1093 days,  6:36,  1 user,  load average: 1.00, 1.05, 1.07
Tasks: 101 total,   3 running,  98 sleeping,   0 stopped,   0 zombie
Cpu(s): 25.1%us,  0.7%sy,  0.0%ni, 74.1%id,  0.0%wa,  0.0%hi,  0.1%si,  0.1%st
Mem:   8388608k total,  8334844k used,    53764k free,     9800k buffers
Swap: 12550136k total,      488k used, 12549648k free,  4936168k cached
 PID  USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 7086 appmon    18   0 13256 7880  440 R 96.7  0.1 791:16.83 bzip2
7085  appmon    18   0 19452 1148  856 S  0.0  0.0   1:45.41 tar cjvf /nwk_storelogs/compressed_logs/compressed_logs_2016_30_04.tar.bz2 /nwk_storelogs/temp/ASPEN-GC-32459:nkp-aspn-1014.log /nwk_stor
30756 appmon    15   0 85952 1944 1000 S  0.0  0.0   0:00.00 sshd: appmon@pts/0
30757 appmon    15   0 64884 1816 1032 S  0.0  0.0   0:00.01 -tcsh

2
আপনার যদি একাধিক সিপিইউ থাকে এবং আপনি এটি একাধিক ট্যারি ফাইলগুলিতে বিভক্ত করতে পারেন বা করতে পারেন তবে আপনি একাধিক সংক্ষেপণ চালাতে পারেন।
জেফ শ্যাচলার

@ জেফ শ্যাচলার কি একাধিক bzip2 প্রসেসগুলি বিভিন্ন ফাইল সংকোচনের মাধ্যমে একই tar.bz2ফাইলটিতে লিখতে পারা সম্ভব ?
আনু

2
এনএএস এ যাওয়ার আগে স্থানীয় ডিস্কে লগ ফাইলগুলি তৈরি করা হয়? যদি তাই সংকোচনের পরে সরান; এইভাবে আপনি সংযোগ দেওয়ার সময় 100 (মুভ) এর পরে 115 (100 রিড + 15 রাইট) না দিয়ে কেবলমাত্র 15Gb ডেটা নেটওয়ার্কের মাধ্যমে প্রেরণ করছেন। বিকল্পভাবে দেখে মনে হচ্ছে আপনি সেই এক bzip2 প্রক্রিয়াতে সিপিইউ আবদ্ধ হতে পারেন, সুতরাং সমান্তরালে একাধিক চালানো (প্রতি সিপিইউতে এক) সাহায্য করতে পারে (যতক্ষণ না আপনি I / O সীমাটি আঘাত করেন)। অথবা একটি সহজ সংক্ষেপণ (উদাহরণস্বরূপ "gzip -1") ব্যবহার করুন। এটি তত ডিস্কের জায়গা সাশ্রয় করবে না তবে এটি দ্রুত চালাবে।
স্টিফেন হ্যারিস

@ সুকিমিন্ডার আমি অবশ্যই এটি চেষ্টা করব এবং আকারের পার্থক্যটি দেখতে পাবো। ধন্যবাদ।
আনু

আপনার topআউটপুটটি দেখায় যে আপনার একক-থ্রেড bzip2প্রক্রিয়াটি একটি কোরকে সর্বাধিক ছাড়িয়ে যাচ্ছে, তবে আপনি এটি কোয়াড-কোর সিস্টেমে চালাচ্ছেন (এক প্রক্রিয়া 100% সিপিইউ -> 25.1%ব্যবহারকারী-স্পেস সিপিইউ সময় ব্যবহার করে, 74% নিষ্ক্রিয়)। সুতরাং সামান্য পরিবর্তনগুলি সহ, আপনি 4x দ্রুত হিসাবে যেতে পারেন, যদি না অন্য কোনও জিনিস বাধা হয়ে দাঁড়ায়। গিলস উত্তর সাবধানে পড়ুন। সংক্ষেপণ করতে ডেটা ধরে থাকা ডিস্কগুলির মতো একই বাক্সে সিপিইউ ব্যবহার করার বিষয়টি বিবেচনা করুন। (আপনি হয়ত কিছু ফাইল নিজের বাক্সে একটি বাক্সে, অন্যটি অন্যটির বাক্সে সংরক্ষণাগারভুক্ত করতে পারেন এবং সংরক্ষণাগার রেখেছিলেন, সুতরাং উভয় সিপিইউই কাজে
পিটার কর্ডেস

উত্তর:


25

প্রথম পদক্ষেপটি হ'ল বাধা কী তা নির্ধারণ করা: এটি কি ডিস্ক আই / ও, নেটওয়ার্ক আই / ও, বা সিপিইউ?

যদি বাধা হ'ল ডিস্ক I / O হয় তবে আপনি করতে পারেন এমন খুব বেশি কিছু নেই। নিশ্চিত করুন যে ডিস্কগুলি অনেকগুলি সমান্তরাল অনুরোধগুলি পরিবেশন করে না কারণ এটি কেবল কর্মক্ষমতা হ্রাস করতে পারে।

যদি বাটলনেক নেটওয়ার্ক I / O হয় তবে মেশিনে সংক্ষিপ্তকরণ প্রক্রিয়া চালান যেখানে ফাইলগুলি সংরক্ষিত থাকে: এটি একটি বিফায়ার সিপিইউ দিয়ে একটি মেশিনে চালানো কেবলমাত্র সিপিইউ বাটনেলেক হলেই সহায়তা করে।

যদি বাধাটি সিপিইউ হয়, তবে প্রথমে বিবেচনা করা উচিত একটি দ্রুত সংক্ষেপণ অ্যালগরিদম ব্যবহার করা। Bzip2 অগত্যা একটি খারাপ পছন্দ নয় - এর প্রধান দুর্বলতা হ'ল সংক্ষেপণের গতি - তবে আপনি gzip ব্যবহার করতে পারেন এবং সংক্ষেপণের গতির জন্য কিছু আকার উত্সর্গ করতে পারেন বা lzop বা lzma এর মতো অন্য ফর্ম্যাট ব্যবহার করে দেখতে পারেন। আপনি সংকোচনের স্তরের টিউনও করতে পারেন: bzip2 ডিফল্ট এ -9(সর্বোচ্চ ব্লকের আকার, সর্বাধিক সংকোচন, তবে দীর্ঘতম সংকোচনের সময়); কম্প্রেশন লেভেল 3 চেষ্টা করার BZIP2মত পরিবেশের পরিবর্তনশীলকে একটি মান হিসাবে সেট করুন This এই থ্রেড এবং এই থ্রেডটি সাধারণ সংক্ষেপণ অ্যালগরিদমগুলি নিয়ে আলোচনা করে; বিশেষত ডারোবার্ট দ্বারা উদ্ধৃত এই ব্লগ পোস্টটি এমন কিছু মানদণ্ড দেয় যা প্রস্তাবিত বা-3gzip -9bzip2একটি নিম্ন স্তরের সাথে তুলনায় একটি ভাল আপস হতে পারে bzip2 -9এই অন্যান্য মাপদণ্ডে নিম্ন স্তরে দ্রুত bzip2 সংক্ষেপণ অনুপাতটি পৌঁছতে পারে। Bzip2 ব্যতীত অন্য যে কোনও পছন্দের ফলে ডিকম্প্রেশন সময় উন্নত হবে। মনে রাখবেন যে সংক্ষেপণ অনুপাত ডেটার উপর নির্ভর করে, এবং সংক্ষেপণ গতিটি সংক্ষেপণ প্রোগ্রামের সংস্করণ, এটি কীভাবে সংকলিত হয়েছিল এবং সিপিইউতে এটি চালিত হয় তার উপর নির্ভর করে।যার মধ্যে লজমা (7 জিপের অ্যালগরিদম, যাতে আপনি এর 7zপরিবর্তে ব্যবহার করতে পারেন tar --lzma) এর পরামর্শ দেয়lzma

আর একটি বিকল্প যদি বাধাটি সিপিইউ হয় এবং আপনার একাধিক কোর সংক্ষেপণের সমান্তরাল করা। এটি করার দুটি উপায় আছে। যে কোনও কম্প্রেশন অ্যালগরিদমের সাথে কাজ করে তা হ'ল ফাইলগুলি পৃথকভাবে সংকুচিত করা হয় (হয় স্বতন্ত্রভাবে বা কয়েকটি গ্রুপে) এবং parallelসমান্তরালে সংরক্ষণাগার / সংক্ষেপণ কমান্ড চালানোর জন্য ব্যবহার করা হয়। এটি সংকোচন অনুপাত হ্রাস করতে পারে তবে একটি পৃথক ফাইল পুনরুদ্ধারের গতি বাড়িয়ে তোলে এবং যে কোনও সরঞ্জামের সাথে কাজ করে। অন্যান্য পদ্ধতিটি সংক্ষেপণ সরঞ্জামের সমান্তরাল বাস্তবায়ন ব্যবহার করা হয়; এই থ্রেড বিভিন্ন তালিকা।


4
"যদি বাধা হ'ল ডিস্ক I / O হয় তবে আপনি করতে পারেন এমন খুব বেশি কিছু নেই।" এটি সম্ভবত এখানে সত্য, যেহেতু সংকোচন অনুপাত ইতিমধ্যে ভাল, তবে সাধারণত যখন আমি / হে বাধা হয় তবে এটি আরও ভাল সিপিইউ ব্যবহার করে আরও ভাল সংকোচনের অনুপাত (বিভিন্ন সংকোচনের সেটিংস বা একটি ভিন্ন অ্যালগরিদম ব্যবহার করে) পাওয়ার জন্য উপযুক্ত। .. আপনি সত্যিই "আমি" হ্রাস করতে পারবেন না (কারণ আপনাকে সমস্ত ডেটা পড়তে হবে) তবে আপনি মাঝে মাঝে "O" :-) উল্লেখযোগ্যভাবে হ্রাস করতে পারেন
গীতসংহিতা

1
আপনি যদি 7zকোনও "শক্ত" সংরক্ষণাগার তৈরি না করতে বা "সলিড" ব্লকের আকার সীমাবদ্ধ করতে বলেন তবে এটি সমান্তরাল, আইআইআরসিতে একচেটিয়া এলজেডএমএ থ্রেড চালাবে। লগ ফাইল ডেটা সংকোচনের জন্য একটি বিশেষ কেস, কারণ এটি অত্যন্ত বাড়াবাড়ি হতে থাকে (লাইনের মধ্যে প্রচুর মিল)। এটি অবশ্যই পরীক্ষার জন্য উপযুক্ত gzip, bzip2এবং xzকোনও বিকল্প অপসারণের জন্য জেনেরিক সংকোচনের মানদণ্ডের চেয়ে বরং ওপি'র নির্দিষ্ট লগ ফাইলগুলিতে। এমনকি দ্রুত কম্প্রেসার দেওয়া উপযুক্ত ( lzop, lz4, snappy)।
পিটার কর্ডেস

এই দিনগুলিতে পছন্দের LZMA সংক্ষেপক xz। --Lzma ব্যবহার করুন tar -Jবা --xzনা। .lzmaএকটি "লিগ্যাসি" ফাইল ফর্ম্যাট হিসাবে বিবেচনা করা হয় । LZMA সংকোচনের জন্য ফাইল ফর্ম্যাটগুলির একাধিক পুনরাবৃত্তি কিছুটা বিব্রতকর এবং কিছু যা তারা প্রথমবারের মতো পাওয়া উচিত। তবে আফাইক এটি এখন মূলত ভাল, এবং .xz একই সংকোচনের প্রবাহের জন্য অন্য কোনও ফাইল ফর্ম্যাট দ্বারা প্রতিস্থাপন করা যাচ্ছে না।
পিটার কর্ডেস

7z এর দুর্দান্ত সংক্ষেপণ এবং মাল্টি-থ্রেডিং রয়েছে, তবে সংরক্ষণাগার বিন্যাসের কারণে (একটি সূচকের প্রয়োজন, বা সম্ভবত বাগগুলি রয়েছে?) আমি মনে করি না এটি পাইপলাইনের মাঝখানে ব্যবহার করা যেতে পারে - এটি স্টিডিন এবং স্টাডআউট ব্যবহার করবে না একই সময়ে
Xen2050

এটি সত্যই সহায়ক এবং অন্তর্দৃষ্টিপূর্ণ ছিল। আমার দলটি বুঝতে পেরেছিল যে এনএফএসের বিরুদ্ধে অপারেশনটি একটি বড় বাধা।
আনু

16

আপনি ইনস্টল করতে পারেন pigz, সমান্তরাল gzip করতে পারেন , এবং মাল্টি-থ্রেডেড সংকোচনের সাথে টার ব্যবহার করতে পারেন। ভালো লেগেছে:

tar -I pigz -cf file.tar.gz *

-Iবিকল্পটি যেখানে :

-I, --use-compress-program PROG
  filter through PROG

অবশ্যই, যদি আপনার এনএএস এর একাধিক কোর / শক্তিশালী সিপিইউ না থাকে তবে আপনি সিপিইউ শক্তি দ্বারা সীমাবদ্ধ।

যে হার্ড-ডিস্ক / অ্যারেতে ভিএম এবং সংক্ষেপণ চলছে তার গতিও বাধা হতে পারে।


1
এবং আপনি যদি bzip2 ব্যবহার করতে চান তবে আপনি pbzip2বা ব্যবহার করতে পারেন lbzip2
রাদোভান গারাবাক

2
এটি আপনার সেরা উত্তর। তবে প্রথমে নিশ্চিত হয়ে নিন যে আপনার প্রথম পদক্ষেপটি এমন কোনও স্থানে রয়েছে যা মূল ফাইলগুলির মতো একই ফাইল সিস্টেমে রয়েছে। অন্যথায়, আপনার "পদক্ষেপ" আসলে বাইট-অনুলিপি-পরে মুছুন। একই ফাইল সিস্টেমে মুভ ফাইল ফাইল লিঙ্কগুলির পুনঃব্যবস্থাপনা। এটি দ্রুততার মাত্রার অর্ডার। আমার লগফাইলগুলি যা শত শত গিগাবাইট বড়, পিগজ সমস্ত পার্থক্য করেছিল। আপনি কতটা সমান্তরাল থ্রেড চালাতে পারবেন তা বলতে পারেন। যতক্ষণ না আপনার সিপুতে একাধিক কোর রয়েছে ততক্ষণে আমি তদন্ত করতে অনেক সময় ব্যয় করব না। আপনি সম্ভবত কোনও ইভেন্টে পিগজ চাইবেন; আপনি তত্ক্ষণাত আপনার গতিপথ পেতে পারেন।
মাইক এস

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

7

এখন পর্যন্ত ডেটা কমপ্রেস করার দ্রুততম এবং কার্যকর উপায় হ'ল এর কম উত্পাদন করা।

আপনি কোন ধরণের লগ তৈরি করছেন? 200 গিগাবাইট প্রতিদিনের শব্দগুলি অনেকটা (আপনি গুগল বা কিছু আইএসপি না থাকলে ...) মনে করেন যে 1MB পাঠ্যটি প্রায় 500 পৃষ্ঠাগুলি, তাই আপনি প্রতিদিন 100 মিলিয়ন পৃষ্ঠার পাঠ্যের সমান পরিমাণ উত্পন্ন করছেন, আপনি এক সপ্তাহের মধ্যে কংগ্রেসের লাইব্রেরি পূরণ করুন।

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


1
এটি একটি আকর্ষণীয় দার্শনিক সমাধান। বেশিরভাগ জীবনের সমস্যার সমাধান হ'ল সমস্যাটি সম্পূর্ণরূপে এড়ানো উচিত নয়। যতক্ষণ না কেউ পরামর্শটিকে ঘনিষ্ঠভাবে পরীক্ষা করে দেখে এবং বুঝতে পারে যে এই লক্ষ্যে পৌঁছাতে হবে এমন শত শত লোক এবং অনুমোদনের সংখ্যা রয়েছে।
আনু

1
@ আনু প্রশ্নের কোনও প্রসঙ্গ দেওয়া হয়নি তাই আমি কোনওটিই ধরে নিই নি। এবং আপনি দয়া করে আমাকে বলতে পারেন আপনি কোথা থেকে অনুমোদনের সংখ্যা পেয়েছেন? আমার কাছে মনে হচ্ছে আপনি কেবল এটি তৈরি করেছেন।
এমিলি এল।

আমি এই upvote করব। এটি প্রায়শই অবহেলিত, তবে একবার লক্ষ্য করা যায়, জীবনের বিভিন্ন সমস্যার স্থির সমাধান।
jrw32982

1
আচ্ছা .. এখন যেহেতু আমি আর সেখানে কাজ করি না, আমি কমপক্ষে প্রকাশ করতে পারি যে এটি অ্যাপলে সমস্যা ছিল। বিশেষত অনলাইন অ্যাপ স্টোর পরিবেশন করা পরিষেবা স্ট্যাকের উপরে ... সুতরাং হ্যাঁ অনুমোদনের পরিমাণ হ'ল বাস্তবের কারণ তাদের মাইক্রোসার্ভিসেসের সংখ্যা রয়েছে এবং তাদের প্রত্যেকটির লগগুলি সংকোচিত করা দরকার এবং তাদের পরিবর্তনের জন্য সাইন অফ করতে হবে লগিং লেভেল ইত্যাদি ... যাইহোক ... আমরা এই ইনহাউস বিটিডব্লিউর জন্য একটি সমাধান বের করেছিলাম .. এটি সমান্তরাল জিজিপের সমান সমান যেটি অন্য মাইক্রো সার্ভিসগুলিতে লোড হয়ে যায়।
আনু

3

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

আপনি যদি গতির আকারের বাণিজ্য করতে ইচ্ছুক না হন তবে LZMA (উদাহরণস্বরূপ xz) ব্যবহার করে এমন একটি সংক্ষেপক ব্যবহার করে আপনি সম্ভবত একই আকার বা আরও ছোট গতি অর্জন করতে পারেন।

আপনি যদি সন্ধান করেন তবে আপনি বেঞ্চমার্কগুলি খুঁজে পাবেন, তবে আপনার সেরা বেটটি আপনার টার্গেট হার্ডওয়্যারটিতে নিজের ফাইলটি দিয়ে কিছু পরীক্ষা করছে।


3

যদি একমাত্র প্রয়োজনীয়তাটি ছিল যে কম্প্রেশনটি দ্রুত হয় , আমি খুব উচ্চভাবে lz4 সুপারিশ করব

এটি প্রচুর জায়গাতে ব্যবহৃত হয় যেখানে সংক্ষেপণের গতি সংকোচনের অনুপাতের চেয়ে বেশি গুরুত্বপূর্ণ (যেমন জেডএফএসের মতো স্বচ্ছ সংকোচনের সাথে ফাইল সিস্টেমগুলি)


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