কিছু সম্পর্কযুক্ত পয়েন্ট:
80 কে অনেকগুলি ফাইল।
এক ডিরেক্টরিতে ৮০,০০০ ফাইল? কোনও অপারেটিং সিস্টেম বা অ্যাপ্লিকেশন ডিফল্টরূপে পরিস্থিতি খুব ভালভাবে পরিচালনা করে না। আপনি কেবল আরএসসিএনসি-র সাথে এই সমস্যাটি লক্ষ্য করবেন।
আপনার আরএসসিএন সংস্করণ পরীক্ষা করুন
আধুনিক আরএসসিএনসি বড় ডিরেক্টরিগুলি অতীতের চেয়ে অনেক ভাল পরিচালনা করে। আপনি সর্বশেষতম সংস্করণ ব্যবহার করছেন তা নিশ্চিত হন।
এমনকি পুরানো আরএসসিএনসি বৃহত্তর ডিরেক্টরিগুলি উচ্চ বিলম্বিত লিঙ্কগুলির চেয়ে বেশ ভালভাবে পরিচালনা করে ... তবে ৮০ কে ফাইল বড় নয় ... এটি বিশাল!
এটি বলেছিল, আরএসসিএনসি-র মেমরির ব্যবহার গাছের ফাইল সংখ্যার সাথে সরাসরি সমানুপাতিক। বড় ডিরেক্টরিগুলি প্রচুর পরিমাণে র্যাম নেয়। দু'পাশে র্যামের অভাবের কারণে আলগা হতে পারে। মেমরির ব্যবহার দেখার সময় একটি পরীক্ষা চালান। লিনাক্স কোনও বাম-ওভার র্যামকে ডিস্ক ক্যাশে হিসাবে ব্যবহার করে, তাই আপনি যদি র্যামের চেয়ে কম চালনা করেন তবে ডিস্ক ক্যাচিং কম থাকে। আপনি যদি র্যামের বাইরে চলে যান এবং সিস্টেমটি অদলবদল শুরু করে, পারফরম্যান্সটি সত্যই খারাপ bad
নিশ্চিত করুন - চেকসাম ব্যবহার হচ্ছে না
--checksum
(বা -c
) প্রতিটি ফাইলের প্রতিটি ব্লক পড়া প্রয়োজন। আপনি সম্ভবত পরিবর্তনের সময়গুলি পড়ার ডিফল্ট আচরণের সাথে পেতে পারেন (ইনোডে সঞ্চিত)।
কাজটি ছোট ছোট ব্যাচে বিভক্ত করুন।
জিগ্যাসেন্সির মতো কিছু প্রকল্প রয়েছে যা "ডিরেক্টরি ট্রি পুনর্বার জন্য পার্ল ব্যবহার করে কাজের চাপ কেটে ফেলবে, আরএসসিএনসি দিয়ে স্থানান্তর করতে ফাইলগুলির ছোট ছোট তালিকা তৈরি করবে"।
অতিরিক্ত ডিরেক্টরি স্ক্যানটি প্রচুর পরিমাণে ওভারহেড হতে চলেছে, তবে এটি সম্ভবত নেট জয় হবে।
ওএস ডিফল্ট এই পরিস্থিতির জন্য তৈরি হয় না।
আপনি যদি সমস্ত ডিফল্ট সাথে লিনাক্স / ফ্রিবিএসডি / ইত্যাদি ব্যবহার করে থাকেন তবে আপনার সমস্ত অ্যাপ্লিকেশনগুলির জন্য পারফরম্যান্স ভয়ানক হবে। ডিফল্টগুলি ছোট ডিরেক্টরিগুলি ধরে নিয়ে যায় তাই বেশি আকারের ক্যাশে র্যাম নষ্ট না করে।
বড় ডিরেক্টরিগুলি আরও ভালভাবে পরিচালনা করতে আপনার ফাইল সিস্টেমটি টিউন করুন: বড় ফোল্ডারের মাপগুলি আইওর কার্যকারিতাটি কমিয়ে দেয়?
"নামি ক্যাশে" দেখুন
বিএসডি-এর মতো অপারেটিং সিস্টেমে একটি ক্যাশে রয়েছে যা আইনডের নাম সন্ধান করতে ত্বরান্বিত করে ("নামি" ক্যাশে ") each প্রতিটি ডিরেক্টরিতে একটি নামি ক্যাশে রয়েছে it এটি যদি খুব ছোট হয় তবে এটি অপটিমাইজেশনের চেয়ে আরও একটি বাধা। যেহেতু আরএসইএনসি প্রতিটি ফাইলে একটি লিস্ট্যাট () করছে, তাই 80k ফাইলের প্রতিটিটির জন্য ইনোড অ্যাক্সেস করা হচ্ছে That এটি আপনার ক্যাশে ফুঁকছে। আপনার সিস্টেমে ফাইল ডিরেক্টরি সম্পাদনা টিউন করবেন কীভাবে গবেষণা করুন।
একটি ভিন্ন ফাইল সিস্টেম বিবেচনা করুন
এক্সএফএস বৃহত্তর ডিরেক্টরি পরিচালনা করার জন্য ডিজাইন করা হয়েছিল। একক ডিরেক্টরিতে ফাইল সিস্টেম প্রচুর পরিমাণে ফাইল দেখুন
5 মিনিটই আপনি করতে পারেন সেরা।
কতগুলি ডিস্ক ব্লক পড়ছে তা গণনা করে বিবেচনা করুন এবং হার্ডওয়ারটি যে কতগুলি ব্লক পড়তে সক্ষম হতে পারে তা আপনার কত দ্রুত আশা করা উচিত তা গণনা করুন।
হতে পারে আপনার প্রত্যাশা খুব বেশি। কোনও পরিবর্তিত ফাইল ছাড়াই আরএসসিএনসি করতে কয়টি ডিস্ক ব্লক পড়তে হবে তা বিবেচনা করুন: প্রতিটি সার্ভারকে ডিরেক্টরিটি পড়তে হবে এবং প্রতি ফাইলটিতে একটি ইনোড পড়তে হবে। আসুন ধরে নেওয়া যাক কিছুই ক্যাশেড নেই কারণ, ভাল, 80 কে ফাইল সম্ভবত আপনার ক্যাশে ফুটিয়ে তুলেছে। ধরা যাক যে গণিতটি সহজ রাখতে 80k ব্লক blocks এটি প্রায় 40M ডেটা, যা কয়েক সেকেন্ডে পাঠযোগ্য হবে। তবে প্রতিটি ব্লকের মধ্যে যদি ডিস্কের সন্ধানের প্রয়োজন হয় তবে এটি আরও বেশি সময় নিতে পারে।
সুতরাং আপনার প্রায় 80,000 ডিস্ক ব্লক পড়তে হবে। আপনার হার্ড ড্রাইভ এটি কত দ্রুত করতে পারে? এটি এলোমেলো I / O, লম্বা লিনিয়ার পড়া নয়, বিবেচনা করে 5 মিনিট বেশ চমৎকার হতে পারে। এটি 1 / (80000/600), বা প্রতি 7.5 মিমিতে একটি ডিস্ক পড়ে। এটি কি আপনার হার্ড ড্রাইভের জন্য দ্রুত বা ধীর? এটা মডেল উপর নির্ভর করে।
অনুরূপ কিছু বিরুদ্ধে মাপদণ্ড
এটি সম্পর্কে ভাবার আর একটি উপায়। যদি কোনও ফাইল পরিবর্তিত ls -Llr
হয় না, একই পরিমাণে ডিস্কের ক্রিয়াকলাপ করে তবে কোনও ফাইল ডেটা কখনই পড়ে না (কেবলমাত্র মেটাডেটা)। ls -Llr
দৌড়াতে সময় লাগে আপনার উপরের সীমা।
আরএসআইএনসি (কোনও ফাইল পরিবর্তিত নয়) এর চেয়ে উল্লেখযোগ্যভাবে ধীর ls -Llr
? তারপরে আপনি rsync এর জন্য যে বিকল্পগুলি ব্যবহার করছেন তা উন্নত করা যেতে পারে। সম্ভবত -c
সক্ষম বা কিছু অন্য পতাকা যা কেবল ডিরেক্টরি এবং মেটাডেটা (ইনোড ডেটা) এর চেয়ে বেশি পড়বে।
আরএসআইএনসি (কোনও ফাইল পরিবর্তন না করে) প্রায় তত দ্রুত ls -Llr
? তারপরে আপনি যতটা পারেন তত ভাল আরএসএনসি টিউন করেছেন। আপনাকে ওএস টিউন করতে হবে, র্যাম যুক্ত করতে হবে, দ্রুত ড্রাইভ পেতে হবে, ফাইল সিস্টেম পরিবর্তন করতে হবে ইত্যাদি
আপনার দেবগণের সাথে কথা বলুন
80k ফাইলগুলি কেবল খারাপ ডিজাইন। খুব কম ফাইল সিস্টেম এবং সিস্টেম সরঞ্জামগুলি এ জাতীয় বৃহত ডিরেক্টরিগুলি খুব ভালভাবে পরিচালনা করে। ফাইলের নামগুলি যদি abcdefg.txt হয় তবে এটিকে abdc / abcdefg.txt এ সংরক্ষণ করুন (পুনরাবৃত্তিটি দ্রষ্টব্য)। এটি ডিরেক্টরিগুলি ছোটগুলিতে বিভক্ত করে, তবে কোডে বিশাল পরিবর্তন প্রয়োজন হয় না।
এছাড়াও .... একটি ডাটাবেস ব্যবহার বিবেচনা করুন। আপনার যদি কোনও ডিরেক্টরিতে 80k ফাইল থাকে তবে সম্ভবত আপনার বিকাশকারীরা সত্যিকার অর্থে যা চান তা একটি ডাটাবেস is মারিয়ানাডিবি বা মাইএসকিউএল বা পোস্টগ্রিসকিউএল প্রচুর পরিমাণে ডেটা সঞ্চয় করার জন্য একটি আরও ভাল বিকল্প হবে।
আরে, 5 মিনিট কি সমস্যা?
শেষ অবধি, 5 মিনিট কি আসলেই খারাপ? আপনি যদি এই ব্যাকআপটি দিনে একবার চালনা করেন তবে 5 মিনিট খুব বেশি সময় হয় না। হ্যাঁ, আমি গতি পছন্দ করি। তবে যদি 5 মিনিট আপনার গ্রাহকদের জন্য "যথেষ্ট ভাল" হয় তবে তা আপনার পক্ষে যথেষ্ট ভাল। আপনার যদি লিখিত এসএলএ না থাকে, আপনার ব্যবহারকারীদের ব্যাকআপগুলি কীভাবে গ্রহণ করবে তা তারা কীভাবে প্রত্যাশা করে তা জানার জন্য অনানুষ্ঠানিক আলোচনার বিষয়ে কীভাবে।
আমি ধরে নিয়েছি পারফরম্যান্সের উন্নতির কোনও প্রয়োজন না হলে আপনি এই প্রশ্নটি জিজ্ঞাসা করেননি। তবে, যদি আপনার গ্রাহকরা 5 মিনিটের সাথে খুশি হন তবে বিজয় ঘোষণা করুন এবং আপনার প্রকল্পগুলির প্রয়োজন এমন অন্যান্য প্রকল্পগুলিতে যান।
আপডেট: কিছু আলোচনার পরে আমরা নির্ধারণ করেছি যে বাধাটি নেটওয়ার্ক। আমি ছাড়ার আগে আমি 2 টি জিনিস সুপারিশ করতে যাচ্ছি :-)।
- সংকোচনের সাহায্যে পাইপটির বাইরে আরও ব্যান্ডউইদথ সঙ্কুচিত করার চেষ্টা করুন। তবে সংক্ষেপণের জন্য আরও সিপিইউ প্রয়োজন, সুতরাং আপনার সিপিইউ যদি ওভারলোড হয় তবে এটি কার্য সম্পাদনকে আরও খারাপ করতে পারে। সাথে এবং ছাড়া আরএসসিএন চেষ্টা করুন এবং সংক্ষেপ সহ এবং ছাড়াই
-z
আপনার এসএসটি কনফিগার করুন। তাদের মধ্যে যে কোনও একটির চেয়ে অন্যদের চেয়ে উল্লেখযোগ্যভাবে আরও ভাল পারফর্ম করে কিনা তা দেখার জন্য সমস্ত 4 টি সংমিশ্রণের সময় দিন।
- কোনও বিরতি আছে কিনা তা দেখার জন্য নেটওয়ার্ক ট্র্যাফিক দেখুন। যদি কিছু বিরতি থাকে তবে আপনি তাদের কী ঘটছে তা আবিষ্কার করতে পারেন এবং সেখানে অনুকূলিত করতে পারেন। যদি RSSync সর্বদা প্রেরণ করা থাকে তবে আপনি সত্যই আপনার সীমাতে রয়েছেন। আপনার পছন্দগুলি হ'ল:
- একটি দ্রুত নেটওয়ার্ক
- আরএসসিএনসি ছাড়া আর কিছু
- উত্স এবং গন্তব্য একসাথে কাছাকাছি সরান। যদি আপনি এটি না করতে পারেন তবে আপনি কি কোনও স্থানীয় মেশিনে আরএসএনসি করতে পারেন তবে আসল গন্তব্যে আরএসএনসি করতে পারেন? প্রাথমিক আরএসএনসি-র সময় সিস্টেমটি ডাউন হতে থাকলে এটি করার সুবিধা রয়েছে।