আমি কীভাবে জানাতে পারি যদি আমি অজানা ঘড়ির বাইরে থাকি?


47

আমি এমন একটি অ্যাপ্লিকেশন ব্যবহার করি যা ইনওটিফাই ওয়াচগুলি গ্রাস করে। আমি ইতিমধ্যে সেট করেছি

fs.inotify.max_user_watches=32768

মধ্যে /etc/sysctl.confকিন্তু গত রাতে আবেদন যদি না আমি নিজ হাতে তা দৌড়ে ইন্ডেক্স বন্ধ, যা আমার বাড়ে সন্দেহ করতে আমি ঘড়ির বাইরে।

যেহেতু আমি এই সংখ্যাটি বাড়ানোর পরে বাণিজ্য কী তা জানি না (এটি কি আরও বেশি র‌্যাম গ্রহণ করে?) তাই আমি জানি না যে এই সংখ্যাটি কেবল বাড়ানো উচিত কিনা তাই আমি জানতে চাই যে উপায় আছে কিনা? এটি এই সমস্ত ঘড়ি ব্যবহার করছে কিনা এবং ট্রেড অফগুলি এটি বাড়ানোর জন্য কী হতে পারে তা বলতে পারে।


এই প্রশ্নটি আবার বেশ প্রাসঙ্গিক হয়ে উঠেছে কারণ এটি 18.04-এ দেখা যাচ্ছে যে কেউ যদি ইনোড ঘড়িগুলি শেষ হয়ে যায় তবে স্ক্রীনটি আনলক করা সম্ভব নয়।
ক্যাস্পারড

উত্তর:


64

আপনি যদি নজর রাখেন না তবে কীভাবে জানবেন? লেজ বলবে!

  • কোনও পুরানো ফাইলের (অনুসরণ) বিকল্প tailদিয়ে শুরু -fকরুন, যেমন tail -f /var/log/dmesg:
    • যদি সবকিছু ঠিকঠাক হয় তবে এটি শেষ 10 টি লাইন প্রদর্শন করবে এবং বিরতি দেবে; সিটিআরএল-সি দিয়ে বাতিল করুন
    • যদি আপনি ঘড়ি থেকে বাইরে থাকেন তবে এটি কিছুটা ক্রিপ্টিক ত্রুটির সাথে ব্যর্থ হবে :
      লেজ: '/ var / লগ / ডিএমএসজি' দেখতে পারে না: ডিভাইসে কোনও স্থান নেই

কৌতূহলের জন্য: লেজটি একটি "টেলটেল" কেন ?

  • প্রকৃতপক্ষে, যে কোনও লিখিত অ্যাপ্লিকেশনটিতে আপনাকে বলার সৌজন্যতা থাকা উচিত, যেহেতু ইনোটাইফাই এপিআই / কলগুলি স্পষ্টভাবে তাদের জানায় যে চুক্তিটি কী।
  • strace tail -f ...পরিবর্তে চেষ্টা করুন, এবং যখন এটি সফল হয়, এটি এর সাথে শেষ হয়:
    inotify_add_watch (4, "/ var / log / dmesg", IN_MODIFY ...) = 1
    
  • তবে যদি এটি ব্যর্থ হয়, যেমন আপনি নজরদারির বাইরে থাকেন তবে এটি বলবে:
    inotify_add_watch (4, "/ var / log / dmesg", IN_MODIFY ..)
     = -1 ENOSPC (ডিভাইসে কোনও স্থান বাকি নেই)
    

আপনি কি ঘড়ি বাড়াতে পারেন? কতটা করে? কোন ট্রেড অফস?

সংক্ষিপ্ত উত্তর: অবশ্যই, ঘাম নেই। আপনি যদি সরাসরি চান অর্ধ মিলিয়ন (524288) এ যান ... অতিরিক্ত গ্যালারী ব্যবহার করা 4GB + মেমরির আধুনিক সিস্টেমে নগণ্য হওয়া উচিত

  • প্রতিটি ব্যবহৃত ইনওটিফাই ওয়াচ 540 বাইট (32-বিট সিস্টেম), বা 1 কেবি (ডাবল - 64৪-বিটের উপর) গ্রহণ করবে [উত্স: , ]
  • এটি কার্নেল মেমরি থেকে বেরিয়ে আসে , যা অসমর্থনীয়।
  • সুতরাং, ধরে নিই যে আপনি সর্বোচ্চটি 524288 এ সেট করেছেন এবং সবগুলি ব্যবহার করা হয়েছিল (অসম্ভব), আপনি প্রায় ব্যবহার করবেন। 32-বিট / 64-বিট কার্নেল মেমরির 256MB / 512MB

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


5
আপনি যদি ইনোটিফাই ওয়াচগুলির প্রকৃত বর্তমান সংখ্যা জানতে চান (তবে আরও হাঁ / না) তবে যানsudo lsof | grep -i inotify | wc -l
ফ্রাঙ্ক নোক

2
"সু-লিখিত-অ্যাপ" লিঙ্কটি ভাঙা।
গৌরব শর্মা

11

আমার এই সংখ্যাটি বাড়ানো উচিত কিনা তা আমি জানি না

আপনি আপনার max_user_watchesমানটি পৌঁছেছেন কিনা তা যাচাই করার সহজ উপায় হ'ল inotifywatchপ্যাকেজটি থেকে আপনার ব্যবহারকারীর সাথে ব্যবহার করা inotify-tools, এবং আপনি এখনও কোনও ফাইল থেকে তথ্য সংগ্রহ করতে পারবেন কিনা তা পরীক্ষা করে দেখুন।

উদাহরণস্বরূপ inotifywatch -v /home/bruno/.profileআমার ফেরত:

Establishing watches...
Total of 1 watches.
Finished establishing watches, now collecting statistics.

সুতরাং inotifyএখানে নতুন ঘড়ি তৈরির কোনও সমস্যা নেই, এখানে কোনও সমস্যা নেই।

যদি আপনি ইনোটিফাই ঘড়িতে আপনার সর্বাধিক সীমাতে পৌঁছে থাকেন তবে এটি এমন কিছু ফিরে আসবে

Failed to watch /home/bruno/.profile; upper limit on inotify watches reached!

আপনি যদি এরকম কিছু দেখতে পান তবে আপনি সীমাতে পৌঁছেছেন এবং অনুমোদিত ঘড়ির সীমাটি বাড়ানো দরকার।

এটি কি আরও বেশি র‌্যাম ব্যবহার করে?

হ্যাঁ এটা করে. তবে এই পুরানো নিবন্ধ অনুসারে চলমান ডেস্কটপের অন্যান্য দিকের তুলনায় এটি যে পরিমাণ পরিমাণ খরচ করে তা ন্যূনতম।

--মেমরি ব্যবহার--

ইনোটাইফাই ডেটা স্ট্রাকচারগুলি হালকা ওজন:

ইনোটাইফাই ওয়াচ 40 বাইট ইনোটিফাই ডিভাইস 68 বাইট ইনোটিফাই ইভেন্টটি 272 বাইট 2

সুতরাং ধরে নিচ্ছি যে কোনও ডিভাইসটিতে 8192 টি ঘড়ি রয়েছে, কাঠামোগুলি কেবল 320KB মেমরি গ্রহণ করবে। এক সাথে সর্বাধিক সংখ্যক 8 টি ডিভাইস বিদ্যমান থাকার অনুমতি পেয়েছে, এটি এখনও মাত্র 2.5 এমবি

প্রতিটি ডিভাইসে একসাথে 256 ইভেন্ট সারি থাকতে পারে, যা ডিভাইসটির পরিমাণ 68KB হয়। এবং শুধুমাত্র .5 এমবি যদি সমস্ত ডিভাইস খোলা থাকে এবং একটি সম্পূর্ণ ইভেন্টের সারি থাকে।

তাই প্রায় 3 এমবি মেমরিটি খোলা এবং পূর্ণ প্রতিটি ক্ষেত্রে বিরল ক্ষেত্রে ব্যবহৃত হয়।

প্রতিটি ইনোটাইফাই ওয়াচ মেমরির মধ্যে একটি ডিরেক্টরি / ফাইলের ইনোড পিন করে, ফাইল সিস্টেমে একটি ইনোডের আকার পৃথক হয় তবে ধরা যাক এটি 512 বাইস।

সুতরাং ধরে নিই যে সর্বাধিক সংখ্যক বৈশ্বিক ঘড়ি সক্রিয় রয়েছে, এটি ইনোড ক্যাশে 32 এমবি ইনডকে পিন করবে। আবার কোনও আধুনিক সিস্টেমে সমস্যা নেই।

আমি অবশ্যই ধরে নিচ্ছি নিবন্ধটি লেখার পর থেকে জিনিসগুলিতে খুব একটা পরিবর্তন হয়নি তবে আমি যে উদ্বেগ প্রকাশ করব না এবং সীমাটি বাড়িয়েছি তাতে র‌্যামের ব্যবহার খুব বেশি বাড়বে না।


সম্পর্কিত পোস্ট inotify


দুঃখিত মানুষ, গতকাল আমার একটি খসড়া কয়েক ঘন্টা খোলা ছিল এবং আমি আমার পোস্ট দেওয়ার আগে আপনার উত্তর দেখতে পেলাম না। আমার ধারণা এটি ঠিক আছে যেহেতু তাদের দুটি পৃথক পদ্ধতি রয়েছে :-) আপনি কি কেবল স্পষ্ট করে বলতে পারবেন যে সাম্প্রতিক কার্নেলগুলিতে ইনোটাইফাই প্রতি ঘড়ি প্রতি 0.5KB (32-বিট) বা 1KB (64-বিট) কার্নেল মেমরি ব্যবহার করে, যেহেতু পুরানো তথ্য 2005 কি আর সত্য বলে মনে হচ্ছে না?
ইশ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.