টার্মিনাল উইন্ডোতে আমি কমান্ডটি কীভাবে থ্রটল করব?


9

আমার convertএকই সাথে প্রচুর চিত্র নিয়ে চলতে হবে। কমান্ডটি বেশ খানিকটা সময় নিয়েছিল তবে এটি আমাকে বিরক্ত করে না।

সমস্যাটি হ'ল কমান্ডটি চলমান অবস্থায় (প্রায় 15 মিনিটের জন্য) এই কমান্ডটি আমার কম্পিউটারটিকে অকেজো হিসাবে রেন্ডার করেছে।

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

সম্পাদনা করুন: শীর্ষ এবং আইওটপ ফলাফল

আমি চালাতে সক্ষম হয়েছি topএবং sudo iotop >iotop.txtএইগুলির মধ্যে একটি রূপান্তরকারী অপারেশন করার সময়। (উত্পাদিত iotop.txt ফাইলটি পড়া কঠিন)

শীর্ষের ফলাফল:

   পিআইডি ব্যবহারকারী পিআর এনআই ভাইরাট আরএস এসআর এস% সিপিইউ% মেমি সময় + কম্যান্ড           
14275 ব্যবহারকারীর নাম 20 0 4043 মি 3.0g 1448 ডি 7.0 80.4 0: 16.45 রূপান্তর 

আইওটপের ফলাফল:

[? 1049 ঘন্টা [1; 24 ঘন্টা (বি [এম [4 লি [? 7 হ [? 1 ঘন্টা = [39; 49 মি [? 25 এল [39; 49 মি (বি [এম [এইচ [2 জ টোটাল ডিস্ক পড়ুন: 1269.04 কে / এস | মোট ডিস্ক লিখন : [59G0.00 বি / সে
(বি [০; m মি। টিডি প্রিও ব্যবহারকারী ডিস্ক পড়ুন ডিস্ক লিখিত স্বাক্ষর করুন (বি [0; 1; 7 মি আইও> (বি [0; 7 মি কম্যান্ড [3; 2 এইচ (বি [এম 2516 be / 4 ব্যবহারকারীর নাম 350.08 কে / এস 0.00 বি / s 0.00% 0.00% জিটজিস্ট-ডাটাহাব
 7394 হতে / 4 ব্যবহারকারীর নাম 568.88 কে / এস 0.00 বি / এস 77.41% 0.00% - রেন্ডার ~ .530483991 [5; 1 এইচ 14275 নিষ্ক্রিয় ব্যবহারকারীর নাম 350.08 কে / এস 0.00 বি / এস 37.49% 0.00% রূপান্তর এস ~ f টেস্ট.পিডিএফ [6 ; 2 এইচ 2048 be / 4 মূল [6; 24H0.00 বি / এস 0.00 বি / এস 0.00% 0.00% [কে ওয়ার্কার / 3: 2]
[5G1 be / 4 মূল [7; 24H0.00 বি / এস 0.00 বি / এস 0.00% 0.00% আরম্ভ

তদ্ব্যতীত, প্রক্রিয়া শেষ হওয়ার পরেও কম্পিউটারটি আগের কার্য সম্পাদনে ফিরে আসে না। sudo swapoff -aএরপরে ছুটে চলার মধ্য দিয়ে আমি একটি উপায় খুঁজে পেয়েছিsudo swapon -a

উত্তর:


5

ওহ, ছেলে, আমি এই মাত্র ধরলাম ... ওপিকে উদ্ধৃত করে:

তদ্ব্যতীত, প্রক্রিয়া শেষ হওয়ার পরেও কম্পিউটারটি আগের কার্য সম্পাদনে ফিরে আসে না। sudo swapoff -aএরপরে ছুটে চলার মধ্য দিয়ে আমি একটি উপায় খুঁজে পেয়েছিsudo swapon -a

ঠিক আছে, এর অর্থ হল আপনি আপনার সিস্টেমে উপলব্ধ র‌্যামকে ক্লান্ত করছেন, যার অর্থ আপনি convertএকবারে অনেকগুলি প্রক্রিয়া চালানোর চেষ্টা করছেন plain convertপরামর্শ দেওয়ার জন্য আমাদের প্রকৃত বাক্য গঠনের দিকে নজর দেওয়া দরকার , তবে মূলত, আপনাকে নিশ্চিত করতে হবে যে আপনি র‌্যামটি আরামদায়কভাবে পরিচালনা করার চেয়ে বেশি যুগপত প্রক্রিয়াগুলি খোলার চেষ্টা করছেন না।

যেহেতু আপনি বলছেন যে এর কারণ convert *.tif blah.pdfকী তা হচ্ছে , যা হচ্ছে তা হ'ল প্রতিটি টিআইএফ এবং এর পিডিএফ রূপান্তরকরণের সামগ্রীটি একবারে র‌্যামে স্টাফ হয়ে উঠছে। আপনার যা করা দরকার তা হ'ল কাজটি বিভক্ত করুন যাতে এটি প্রয়োজনীয় হয় না। মনের দিকে ঝুঁকে যাওয়ার একটি সম্ভাবনা হ'ল পরিবর্তে এর মতো কিছু করা find . -iname '*.tif' | xargs -I% convert % %.pdf, তারপরে ব্যবহার করা pdftkবা এটির মতো পৃথক পিডিএফগুলি একসাথে আঠালো করার মতো কিছু something যদি আপনি সত্যিই অভিনব হতে চান, এবং আপনার একটি মাল্টিকোর সিপিইউ রয়েছে, এটি আপনাকে এন ব্যাচে , যেখানে এন আপনার কোরের সংখ্যা, এবং পুরো কাজটি দ্রুততার সাথে সম্পন্ন করার জন্য একটি ছোট স্ক্রিপ্ট লেখার সুযোগ দেয় ords । :)

pdftk কীভাবে: http://ubuntuhowtos.com/howtos/merge_pdf_files (মূলত নিচে boils sudo apt-get install pdftk; pdftk *.pdf cat output merged.pdf)


আমি convert *.tif bla.pdfএকসাথে কেবলমাত্র একটি প্রক্রিয়া চালাচ্ছি , তবে ইনপুটটি পুরো একগুচ্ছ টিফ চিত্র। গুচ্ছ ইমেজগুলি থেকে একটি পিডিএফ উত্পাদন করার এটি একটি উপায় যা ভালভাবে কাজ করে তবে আমার পিসিকে দমন করে।
কি

ed সম্পাদিত উত্তর দেখুন দয়া করে :)
জিম সালটার

এটি একটি সাধারণ পরিবর্তনের সাথে নিখুঁতভাবে কাজ করেছে। find . -iname '*.tif' | xargs -I% convert % %.pdfপরিবর্তে find . -iname '*.pdf' | xargs -I% convert % %.pdf। এটা খুব দ্রুত ছিল! ধন্যবাদ।
কি

দুঃখিত, মস্তিষ্ক এবং আঙ্গুলের মধ্যে ত্রুটি :-)
জিম সালটার

এক ছোট পরিবর্তন ... এটা সম্পর্কে জানা একটি ভাল জিনিস -execএবং -execdirবিকল্পের জন্য find। আপনার ক্ষেত্রে, ব্যবহারের পরিবর্তে xargs, আমি ব্যবহার করব:find -iname '*.tif' -execdir convert {} {}.pdf ';'
ধানের ল্যান্ডাউ

12

man nice, এবং আপনার যদি I / O থ্রোটলিংয়ের প্রয়োজন হয় man ionice

আসুন কয়েকটি সহজ উদাহরণ তাকান।

থ্রোটলিং সিপিইউ ব্যবহার:

you@box:/$ nice -n 10 /usr/bin/convert blah.gif blah.jpg

আপনার বিবরণ থেকে, তবে, সিপিইউ ব্যবহার এখানে অবশ্যই আপনার আসল সমস্যা নয়। সম্ভবত, আপনার মারাত্মক I / O বিতর্ক রয়েছে।

থ্রোটলিং ডিস্ক ব্যবহার:

you@box:/$ ionice -c2 -n7 /usr/bin/convert blah.gif blah.jpg

-c2"সেরা প্রচেষ্টা", এবং -n7সর্বনিম্ন "সেরা প্রচেষ্টা" অগ্রাধিকার। সুতরাং, এটি সিস্টেমে অন্যান্য জিনিসের তুলনায় চাকরিটি I / O অগ্রাধিকার কমিয়ে দেবে।

you@box:/$ ionice -c3 /usr/bin/convert blah.gif blah.jpg

-c3(কোনও অগ্রাধিকার স্তরের প্রয়োজন নেই) এর অর্থ "কেবল নিষ্ক্রিয়"। চাকরি সেট -c3কিন্তু সম্ভাব্য একটি - শুধুমাত্র অন্যথায় অলস ডিস্ক পূর্বপরিকল্পনা সময়, সিস্টেমের সব সময়ে কার্যত কোন প্রভাব জন্য পর্যন্ত সময় লাগতে যথেষ্ট আপনার কাজ জন্য আর সঞ্চালনের সময়, কিভাবে ব্যস্ত সিস্টেম বাকি পায় উপর নির্ভর করে।


আমি কীভাবে niceরূপান্তর কমান্ডের সাথে সংহত করব ? যদি আমি ভুল না করে চলেছি তবে ইতিমধ্যে চলমান প্রক্রিয়াগুলির জন্য দুর্দান্ত কাজ।
কি

1
উপরে দেখুন ... এছাড়াও, srsly, ম্যান পৃষ্ঠা পড়ুন। এটি খুব সহজ ম্যান পেজ, মোটেই চিবানো নয়। :-)
জিম সালটার

আমি এটা চেষ্টা করেছি. বাছাই করা সহায়তা কিন্তু যথেষ্ট নয়। আমি nice -n 20পরের বার চেষ্টা করব ।
কি

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

যেহেতু পুরো সিস্টেমটি আপনার পক্ষে বেশ ব্যবহারযোগ্য নয়, আপনি নিজের কাজ শুরু করার সাথে সাথেই কিছু চেষ্টা করতে convert blah.gif blah.jpg & iotopপারেন যা iotopতত্ক্ষণাত্ জ্বলে উঠবে convert
জিম সালটার

2

যে cpulimitকোনও প্রক্রিয়ার সিপিইউ ব্যবহার সীমাবদ্ধ করার জন্য বলা একটি প্রোগ্রাম ব্যবহারের জন্য এখানে একটি দুর্দান্ত নিবন্ধটি এখানে রয়েছে :

http://maketecheasier.com/limit-cpu-usage-of-any-process-in-linux/2010/09/22

সমস্যাটি যেমন আপনি বলেছিলেন convertপ্রক্রিয়াটি শুরু হওয়ার পরে তার পিআইডি সন্ধান করবেন ।

শুরুর পরে convertআপনি যদি এখনও টার্মিনালে কমান্ড টাইপ করতে পারেন তবে আপনি ps aux | grep convertএটির পিআইডি খুঁজে পেতে চালাতে পারেন, তারপরে sudo cpulimit -p PID -l CPU%থ্রোটলিং শুরু করতে।

অথবা যদি শুরু convertকরে আপনার টার্মিনালটিকে লক করে দেয় নিবন্ধটি আপনাকে দেখায় যে আপনি কীভাবে cpulimitএকটি ব্যাকগ্রাউন্ড ডেমন হিসাবে চালাতে পারেন যা নির্দিষ্ট পরিমাণ সিপিইউ ব্যবহারের মাধ্যমে কোনও প্রক্রিয়া স্বয়ংক্রিয়ভাবে নিরীক্ষণ এবং থ্রোটল করবে। শুভকামনা!


বিল্ট-ইন niceকমান্ডের তুলনায় এই স্ক্রিপ্টটি একটি খারাপ ধারণা এবং আদিম । cpulimitপ্রক্রিয়াটি একটি নির্দিষ্ট% সিপিইউ ব্যবহারের মধ্যে সীমাবদ্ধ করবে অন্য কোনও কিছুর জন্য সিপিইউ সময় প্রয়োজন কিনা; niceবিপরীতে, অগ্রাধিকার স্তরগুলি নির্ধারণ করে (40 টি মোট!) যা অন্যের উপরে বা নীচে একটি কার্যকে অগ্রাধিকার দেয়।
জিম সালটার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.