কোর প্রতি থ্রেডের সর্বোত্তম সংখ্যা


280

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

যেহেতু আমার 4 টি কোর রয়েছে, আমি কোরের চেয়ে বেশি থ্রেড চালিয়ে কোনও গতি বাড়ানোর আশা করি না, যেহেতু একক কোর কেবলমাত্র একটি নির্দিষ্ট মুহুর্তে একক থ্রেড চালাতে সক্ষম। আমি হার্ডওয়্যার সম্পর্কে বেশি কিছু জানি না, সুতরাং এটি কেবল অনুমান।

কোরের চেয়ে বেশি থ্রেডে সমান্তরাল প্রক্রিয়া চালানোর কোনও সুবিধা কি? অন্য কথায়, আমি যদি 4 টি থ্রেডের পরিবর্তে 4000 থ্রেড ব্যবহার করে চালিত করি তবে আমার প্রক্রিয়াটি কি দ্রুত, ধীর বা প্রায় একই সময়ে শেষ হবে?

উত্তর:


253

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

খুব বেশি দিন আগে, আমি মনোমুখে একটি সুন্দর শালীন বোঝার অধীনে একটি এএসপি.এনইটি অ্যাপ্লিকেশন চালিয়ে 2 কোয়াড-কোর মেশিনে পারফরম্যান্স টেস্টিং করছিলাম। আমরা সর্বনিম্ন এবং সর্বাধিক সংখ্যক থ্রেডের সাথে খেলেছি এবং শেষ পর্যন্ত আমরা জানতে পেরেছিলাম যে সেই নির্দিষ্ট অ্যাপ্লিকেশনটির জন্য সেই নির্দিষ্ট কনফিগারেশনে সেরা থ্রুপুটটি কোথাও 36 এবং 40 থ্রেডের মধ্যে ছিল। এই সীমানার বাইরে যে কোনও কিছু খারাপ ফলাফল করেছে। পাঠ শিখলাম? আমি যদি আপনি হয়ে থাকি তবে আপনি আপনার আবেদনের জন্য সঠিক নম্বর না পাওয়া পর্যন্ত আমি বিভিন্ন সংখ্যক থ্রেড দিয়ে পরীক্ষা করব।

নিশ্চিত করার জন্য একটি জিনিস: 4 কে থ্রেডগুলিতে বেশি সময় লাগবে। এটি প্রচুর প্রসঙ্গে চলেছে


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

5
+1, + উত্তর: এটি আমাকে বিস্মিত করে যে কোরগুলির চেয়ে অনেক বেশি থ্রেড থাকার ফলে আরও ভাল পারফরম্যান্স পাওয়া যায়, যদিও আরও থ্রেডের অর্থ প্রতিযোগী থ্রেডের তুলনায় সময় ভাগের বৃহত্তর অংশ। আমার অ্যাপ্লিকেশনটি পারফরম্যান্সের পার্থক্য সনাক্ত করতে পারে এবং স্বয়ংক্রিয়ভাবে থ্রেডের সর্বোত্তম সংখ্যায় সুর করতে পারে nice
জুলিয়েট

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

4
কোর প্রতি 1 টি থ্রেড সর্বোত্তম নয়। এটি কিছুটা আরও বেশি হওয়া দরকার, প্রায় দ্বিগুণ যেহেতু এটি কোনও থ্রেড সাময়িকভাবে অবরুদ্ধ করা থাকলে অন্য থ্রেডটি চলতে দেয়। এমনকি যদি কেবল স্মৃতিতে থাকে। আপনার যদি এমন সিস্টেম (পি 4, আই 7, সান রক ইত্যাদি) থাকে যা এসএমটি / এইচটি বৈশিষ্ট্যযুক্ত থাকে
মার্কো ভ্যান ডি ভোর্ট

1
সুতরাং আমার উত্তরে "এটি সম্ভবত খুব সম্ভবত সম্ভব নয়" সঠিক নম্বর সন্ধান করা প্রয়োগ এবং আর্কিটেকচারের উপর নির্ভর করে এটি চলে।
গনজালো 15

129

আমি @ গঞ্জালোর উত্তরের সাথে একমত আমার একটি প্রক্রিয়া রয়েছে যা আমি / O করে না এবং আমি যা পেয়েছি তা এখানে:

এখানে চিত্র বর্ণনা লিখুন

নোট করুন যে সমস্ত থ্রেড একটি অ্যারেতে কাজ করে তবে বিভিন্ন ব্যাপ্তি (দুটি থ্রেড একই সূচীতে অ্যাক্সেস পায় না), সুতরাং ফলাফলগুলি পৃথক অ্যারেতে কাজ করে থাকলে তারতম্য হতে পারে।

1.86 মেশিনটি একটি এসএসডি সহ একটি ম্যাকবুক এয়ার। অন্য ম্যাকটি একটি সাধারণ এইচডিডি সহ একটি আইম্যাক (আমি মনে করি এটি 7200 আরপিএম)। উইন্ডোজ মেশিনটিতে একটি 7200 আরপিএম এইচডিডিও রয়েছে।

এই পরীক্ষায়, অনুকূল সংখ্যাটি মেশিনে কর সংখ্যার সমান।


14
গ্রাফের জন্য +1। স্পষ্টভাবে কোর প্রতি 1 টি থ্রেড সেরা, তবে এটি আকর্ষণীয় যে কোয়াড কোর সিস্টেমটি অন্য থ্রেড সংখ্যায় (<100) অন্যভাবে হয় না বলে মনে হয়।
জিম গ্যারিসন

46
গ্রাফের জন্য -1! পূর্ণসংখ্যার-মূল্যবান এক্স-স্থানাঙ্কগুলির মধ্য দিয়ে মসৃণ বক্ররেখা? 1 2 3 থেকে 10 20 30 থেকে 50 100 পর্যন্ত একটি বুনো লাফানো? এবং y- স্থানাঙ্কগুলি যা ভাল পরিমাপের জন্য 10 প্লাস 2 এর গুণক। এটি এক্সেলের কাজ, তাই না?
স্পেসডম্যান

5
@ স্পিডম্যান এটি হ্যাঁ। মসৃণ বক্ররেখার আইএমএইচও অনেক সুন্দর চেহারা রয়েছে। : ডি
মোতাসিম

22
@ প্যাসক্লভকুটেন, সমস্যাটি এটি দেখতে সুন্দর দেখাচ্ছে না, এটি প্রথম নজরে প্রতারিত। প্রথমত y- অক্ষটি 42 থেকে শুরু হয়, পরীক্ষিত মেশিনগুলির মধ্যে আপাত পার্থক্যটি অতিরঞ্জিত করে। দ্বিতীয়ত, এক্স-অক্ষ মানগুলির অদ্ভুত অগ্রগতি বোঝায় যে 'সময় নেওয়া' 'থ্রেডের সংখ্যা' দিয়ে রৈখিকভাবে স্কেল করে না, এটি নীল লাইনের জন্য বিশেষত সত্য। আমি মনে করি এটির সাথে অন্যেরা (আমার সহ) সমস্যাটি হ'ল এটি ডেটার ভুল উপস্থাপনা করে।
পলুস 86

13
@ স্পিডম্যান গ্রাফের সমালোচনা হ'ল আমি গত 24 ঘন্টার মধ্যে সবচেয়ে হাস্যকর বিষয় এসেছি। গ্রাফ সাহায্য করে। অনেক. সময়কাল। এটি আরও ভাল করা যেতে পারে? কেউ গ্রাহ্য করে না. পৃথক পরিবর্তে মসৃণ বক্র? এটাই আপনার সমস্যা ???? আমি ধরে নিচ্ছি, আপনারা তাদের উত্তরগুলিতে কখনই এই জাতীয় গ্রাফ অন্তর্ভুক্ত করবেন না কারণ এটি দেখতে সুন্দর করার জন্য আপনার অতিরিক্ত সময় / শক্তি নেই। এটাই আমার বক্তব্য।
tyrex

49

আমি জানি এই প্রশ্নটি বরং পুরানো, তবে 2009 সাল থেকে জিনিসগুলি বিকশিত হয়েছে।

এখন অ্যাকাউন্টে নেওয়া দুটি জিনিস রয়েছে: কোরগুলির সংখ্যা এবং প্রতিটি কোরের মধ্যে চলতে পারে এমন থ্রেডের সংখ্যা।

ইন্টেল প্রসেসরের সাহায্যে থ্রেডের সংখ্যা হাইপারথ্রেডিং দ্বারা সংজ্ঞায়িত করা হয় যা মাত্র 2 (যখন উপলব্ধ থাকে)। হাইপারথ্রেডিং 2 টি থ্রেড ব্যবহার না করেও আপনার মৃত্যুদণ্ডের সময়টিকে দুটি দ্বারা কেটে দেয়! (অর্থাত্ 1 টি পাইপলাইন দুটি প্রক্রিয়ার মধ্যে ভাগ করা - এটি বেশি ভাল যখন আপনার আরও বেশি প্রক্রিয়া হয়, অন্যথায় তেমন ভাল হয় না More আরও কোরিগুলি অবশ্যই আরও ভাল!)

অন্যান্য প্রসেসরের উপর আপনার কাছে 2, 4 বা 8 টি থ্রেড থাকতে পারে। সুতরাং যদি আপনার কাছে 8 টি কোর থাকে যার প্রতিটি 8 টি থ্রেড সমর্থন করে, আপনার প্রসঙ্গের স্যুইচিং ছাড়াই সমান্তরালে 64৪ টি প্রসেস চলতে পারে।

"কোনও প্রসঙ্গের স্যুইচিং" স্পষ্টত সত্য নয় যদি আপনি কোনও মানক অপারেটিং সিস্টেম চালনা করেন যা আপনার নিয়ন্ত্রণের বাইরে থাকা সমস্ত প্রকারের প্রসঙ্গের স্যুইচিং করে। তবে এটাই মূল ধারণা। কিছু ওএস আপনাকে প্রসেসর বরাদ্দ করতে দেয় যাতে আপনার অ্যাপ্লিকেশনটিতে কেবল প্রসেসরের অ্যাক্সেস / ব্যবহার থাকতে পারে!

আমার নিজের অভিজ্ঞতা থেকে, আপনার কাছে প্রচুর আই / ও থাকলে একাধিক থ্রেড ভাল। আপনার যদি খুব ভারী মেমরির নিবিড় কাজ থাকে (উত্স 1 পড়ুন, উত্স 2 পড়ুন, দ্রুত গণনা করুন, লিখুন) তবে আরও থ্রেড থাকা কোনও লাভ হয় না। আবার এটি নির্ভর করে আপনি একসাথে কতগুলি ডেটা পড়বেন / লিখবেন (যেমন আপনি যদি এসএসই 4.2 ব্যবহার করেন এবং 256 বিট মানগুলি পড়েন তবে এটি সমস্ত পদক্ষেপ তাদের ধাপে থামিয়ে দেয় ... অন্য কথায়, 1 থ্রেড সম্ভবত প্রয়োগ করা অনেক সহজ এবং সম্ভবত প্রায় দ্রুত হিসাবে দ্রুত না হলেও এটি আপনার প্রক্রিয়া এবং মেমরি আর্কিটেকচারের উপর নির্ভর করবে, কিছু উন্নত সার্ভার পৃথক পৃথক কোরগুলির জন্য পৃথক মেমরি রেঞ্জ পরিচালনা করে তাই আলাদা আলাদা থ্রেডগুলি আরও দ্রুত আপনার ডেটা সঠিকভাবে দায়ের করা হয়েছে বলে ধরে নেওয়া হবে ... এজন্য কারও কারও কাছে আর্কিটেকচার, 4 টি প্রক্রিয়া 4 টি থ্রেড সহ 1 টির চেয়ে বেশি দ্রুত চলবে))


4
সম্ভবত অন্যরাও আছেন, তবে আমি যাকে চিনি সে হ'ল আইবিএমের পাওয়ার প্রসেসর। প্রসেসরের প্রতি 4 বা 8 থ্রেড সহ তাদের সিস্টেম ছিল। এখন তারা আরও কোরগুলিতে ক্র্যাঙ্ক করতে পারে, তাই পরিবর্তে তারা প্রতিটি কোর প্রতি 2 টি থ্রেড সরবরাহ করে ...
অ্যালেক্সিস উইলক

এটি পুরানো, তবে বেশিরভাগ ইন্টেল আই 5, আই 7 এর মাল্টি থ্রেড সিপিইউ রয়েছে উদাহরণস্বরূপ আই 7 সিপিইউতে সাধারণত 4 টি কোর থাকে তবে 8 টি থ্রেড থাকে।
এডগার.এ

4
প্রসেসরের থ্রেড নেই। তাদের শারীরিক এবং যৌক্তিক কোর রয়েছে। হাইপারথ্রেডিং সহ, একটি একক শারীরিক কোর দুটি লজিকাল কোর হিসাবে কাজ করে। আমার কাছে এমন একটি প্রযুক্তি ছিল যা জোর দিয়েছিল যে থ্রেডযুক্ত প্রসেসরগুলি একটি আসল জিনিস, তাই আমি প্রসেসরের হোয়াইটবোর্ডে একটি ছবি আঁকলাম যার সাথে থ্রেডের স্পিন্ডলটি আটকানো ছিল।

@ টেকনিকম্পায়ার এই ইন্টেল. com / কনটেন্ট / www / us / en / en / processors / core/… দেখুন , সম্ভবত তখন আপনি ইন্টেলের সাথে যোগাযোগ করতে পারেন এবং সেগুলি থ্রেডও আঁকতে পারেন।
g7k

24

আসল কর্মক্ষমতা প্রতিটি থ্রেড কত স্বেচ্ছাসেবী ফলন করবে তার উপর নির্ভর করবে। উদাহরণস্বরূপ, থ্রেডগুলি যদি কোনওভাবেই I / O না করে এবং কোনও সিস্টেম পরিষেবা ব্যবহার না করে (যেমন তারা 100% সিপিইউ-আবদ্ধ) তবে কোর প্রতি 1 থ্রেডই সর্বোত্তম। থ্রেডগুলি যদি অপেক্ষা করতে হয় এমন কিছু করে, তবে আপনাকে থ্রেডগুলির অনুকূল সংখ্যা নির্ধারণ করতে পরীক্ষা করতে হবে। 4000 থ্রেডে গুরুত্বপূর্ণ শিডিয়ুলিং ওভারহেড ব্যয় হবে, সুতরাং এটি সম্ভবত সর্বোত্তম নয়।


21

উত্তরটি প্রোগ্রামটিতে ব্যবহৃত অ্যালগরিদমের জটিলতার উপর নির্ভর করে। টিএন ও টিএম প্রক্রিয়াকরণের সময় দুটি এনআর এবং 'এম' সংখ্যার জন্য নির্ধারিত সংখ্যক থ্রেডের জন্য দুটি পরিমাপ করে থ্রেডের অনুকূল সংখ্যা গণনা করার একটি পদ্ধতি নিয়ে এসেছি। রৈখিক অ্যালগোরিদমগুলির জন্য, থ্রেডগুলির সর্বোত্তম সংখ্যা হবে এন = স্কয়ার্ট ((এম এন (টিএম * (এন -1) - টিএন * (এম -1))) / (এন টিএন-এম টিএম))।

দয়া করে বিভিন্ন অ্যালগরিদমের জন্য অনুকূল সংখ্যার গণনা সম্পর্কিত আমার নিবন্ধটি পড়ুন: পাভেলকাজেনিন.ওয়ার্ডপ্রেস.কম


4
কেন এটি ডাউনভোটেড? আমি দুঃখিত তবে এটি এই প্রশ্নের সেরা উত্তর। গঞ্জালো প্রশ্নটির সাহসী অংশকে সম্বোধন করে, এবং পাকাজন শিরোনামটি সম্বোধন করে। উভয় উত্তর খুব দরকারী, তবে পাকাযেন উত্তর প্রাসঙ্গিক কারণ আমাদের কাছে থ্রেডের সংখ্যা আনুমানিক করার পদ্ধতিগত পদ্ধতি রয়েছে। এমনকি তিনি লিনিয়ার অ্যালগোরিদমের সূত্রও দেন।
tobiak777

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

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

9

আমি ভেবেছিলাম আমি এখানে অন্য দৃষ্টিকোণ যুক্ত করব। উত্তরটি নির্ভর করে যে প্রশ্নটি দুর্বল স্কেলিং বা শক্তিশালী স্কেলিং ধরেছে কিনা on

উইকিপিডিয়া থেকে :

দুর্বল স্কেলিং: প্রসেসরের প্রতি নির্দিষ্ট সমস্যা আকারের জন্য প্রসেসরের সংখ্যার সাথে কীভাবে সমাধানের সময় পরিবর্তিত হয়।

শক্তিশালী স্কেলিং: একটি নির্দিষ্ট মোট সমস্যার আকারের জন্য প্রসেসরের সংখ্যার সাথে কীভাবে সমাধানের সময় পরিবর্তিত হয়।

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

থ্রেডের সংখ্যা কোরগুলির সংখ্যা ছাড়িয়ে গেলেও এটি সত্য holds উদাহরণস্বরূপ ধরুন যে প্রোগ্রামটিতে 8 টি স্বেচ্ছাসেবক ইউনিট (বা এটি) রয়েছে যা একটি 4 কোর মেশিনে কার্যকর করা হবে।

কেস 1: চারটি থ্রেড দিয়ে চালান যেখানে প্রতিটি থ্রেডের 2AU সম্পূর্ণ করতে হবে। প্রতিটি থ্রেড সম্পূর্ণ হতে 10 সেকেন্ড সময় নেয় ( অনেকগুলি ক্যাশে মিস করে )। চারটি কোর সহ মোট সময়ের পরিমাণ হবে 10 সে (10 সে * 4 থ্রেড / 4 কোর)।

কেস 2: আটটি থ্রেড দিয়ে চালান যেখানে প্রতিটি থ্রেডের 1AU সম্পূর্ণ করতে হবে। প্রতিটি থ্রেড মাত্র 2 সেকেন্ড নেয় ( ক্যাশে মিসের পরিমাণ হ্রাসের কারণে 5 এস এর পরিবর্তে )। চারটি কোর সহ মোট সময়ের পরিমাণ হবে 4 এস (2 এস * 8 থ্রেড / 4 কোর)।

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


7

একসাথে 4000 থ্রেড বেশ উচ্চ।

উত্তরটি হ্যা এবং না. আপনি যদি প্রতিটি থ্রেডে আই / ওকে প্রচুর অবরুদ্ধ করে থাকেন তবে হ্যাঁ, আপনি লজিক্যাল কোর প্রতি সম্ভবত 3 বা 4 থ্রেড পর্যন্ত উল্লেখযোগ্য স্পিডআপগুলি প্রদর্শন করতে পারেন।

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


7

মাপকাঠি.

আমি একটি অ্যাপ্লিকেশনটির জন্য থ্রেডের সংখ্যাটি র‌্যাম্পিং শুরু করব, 1 থেকে শুরু করে এবং তারপর 100 এর মতো কিছুতে গিয়ে প্রতিটি থ্রেডের জন্য তিন-পাঁচটি ট্রায়াল চালিয়েছি এবং নিজেরাই অপারেশন গতির একটি গ্রাফ বনাম থ্রেডের সংখ্যা তৈরি করব ।

আপনার উচিত যে চারটি থ্রেড কেসটি সর্বোত্তম হওয়া উচিত, তার পরে রানটাইমে সামান্য উত্থানের সাথে, তবে সম্ভবত না not এটি হতে পারে যে আপনার অ্যাপ্লিকেশনটি ব্যান্ডউইদথ সীমিত, অর্থাত্, আপনি মেমরিতে লোড করছেন এমন ডেটাসেট বিশাল, আপনি প্রচুর পরিমাণে ক্যাশে মিস করছেন, যেমন 2 থ্রেড অনুকূল।

আপনি পরীক্ষা না করা পর্যন্ত জানতে পারবেন না।


3

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

আপনি 'পিএস' কমান্ড সম্পর্কে ম্যান পৃষ্ঠা ব্যবহার করতে পারেন।

man ps

আপনি যদি সমস্ত ব্যবহারকারীর প্রক্রিয়ার সংখ্যা গণনা করতে চান তবে আপনি এই আদেশগুলির একটি ব্যবহার করতে পারেন:

  1. ps -aux| wc -l
  2. ps -eLf | wc -l

ব্যবহারকারীর প্রক্রিয়ার সংখ্যা গণনা করা হচ্ছে:

  1. ps --User root | wc -l

এছাড়াও, আপনি "এইচটিপি" ব্যবহার করতে পারেন [রেফারেন্স] :

উবুন্টু বা ডেবিয়ানে ইনস্টল করা:

sudo apt-get install htop

রেডহাট বা সেন্টোস-এ ইনস্টল করা হচ্ছে:

yum install htop
dnf install htop      [On Fedora 22+ releases]

আপনি যদি সোর্স কোড থেকে হটপ সংকলন করতে চান তবে আপনি এটি এখানে পাবেন


2

আদর্শটি প্রতি কোর 1 টি থ্রেড, যতক্ষণ না কোনও থ্রেড ব্লক করবে না।

এটি সত্য নাও হতে পারে এমন একটি ক্ষেত্রে: মূলটিতে অন্যান্য থ্রেড চলছে, এমন ক্ষেত্রে আরও থ্রেডগুলি আপনার প্রোগ্রামটিকে কার্যকর করার সময়টির একটি বৃহত টুকরো দিতে পারে।


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

2
ঠিক আছে, আমরা একটি যাদুকরী আদর্শভাবে সমান্তরাল অ্যাপ্লিকেশনটি নিয়ে কাজ করছি। আমি যদি কখনও এই জাতীয় জিনিস তৈরি করি তবে আমি সিপিইউকে যতটা চাই ডগা করার অধিকারী বোধ করব।
প্যাট্রোস

2

প্রচুর থ্রেডের একটি উদাহরণ ("থ্রেড পুল") বনাম কোর প্রতি এক হ'ল লিনাক্স বা উইন্ডোজে একটি ওয়েব-সার্ভার প্রয়োগ করা।

যেহেতু সকেটগুলিকে লিনাক্সে পোল করা হয় তার মধ্যে অনেকগুলি থ্রেড সঠিক সময়ে সঠিক সকেটে ভোট দেওয়ার সম্ভাবনা বাড়িয়ে তুলতে পারে - তবে সামগ্রিক প্রক্রিয়াজাতকরণ ব্যয় খুব বেশি হবে।

উইন্ডোজে সার্ভারটি আই / ও কমপ্লিশেশন পোর্টস - আইওসিপিগুলি ব্যবহার করে প্রয়োগ করা হবে - যা অ্যাপ্লিকেশন ইভেন্টটি চালিত করবে: যদি কোনও আই / ওএস ওএস সম্পূর্ণ করে তবে এটি প্রক্রিয়া করার জন্য স্ট্যান্ড-বাই থ্রেড চালু করে। প্রসেসিং শেষ হয়ে গেলে (সাধারণত অনুরোধ-প্রতিক্রিয়া জুটির মতো অন্য আই / ও অপারেশন সহ) থ্রেডটি পরবর্তী সমাপ্তির জন্য অপেক্ষা করতে IOCP পোর্টে (কাতারে) ফিরে আসে।

যদি কোনও I / O সম্পন্ন না করে থাকে তবে কোনও প্রক্রিয়া করার দরকার নেই এবং কোনও থ্রেড চালু হয় না।

প্রকৃতপক্ষে, মাইক্রোসফ্ট আইওসিপি বাস্তবায়নে কোর প্রতি একাধিক থ্রেডের প্রস্তাব দিচ্ছে না। যে কোনও আই / ও আইওসিপি পদ্ধতিতে সংযুক্ত থাকতে পারে। প্রয়োজনে আইওসিও আবেদন দ্বারা পোস্ট করা যেতে পারে।


আপনি কোন লিনাক্সের কথা বলছেন তা আমি জানি না, তবে কোনও সংযোগ না আসা পর্যন্ত আমার ব্লকগুলি। আমি আপনাকে নির্বাচন () এবং এফডি_এসইটি () এবং অনুরূপ ফাংশন / ম্যাক্রোগুলি সম্পর্কে কয়েকটি জিনিস পড়ার পরামর্শ দিচ্ছি।
অ্যালেক্সিস উইল্ক

ঠিক আছে, সুতরাং এমন কোনও অ্যাসিক্রোনাস ফর্ম নেই যা অবিলম্বে ফিরে আসে?
অলিফ ফোরশেল

নির্বাচন করুন () ম্যান পৃষ্ঠা থেকে:timeout is an upper bound on the amount of time elapsed before select() returns. If both fields of the timeval structure are zero, then select() returns immediately. (This is useful for polling.) If timeout is NULL (no timeout), select() can block indefinitely.
অ্যালেক্সিস উইল্ক

0

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

তবে এটি আপনার আর্কিটেকচারের উপরও নির্ভর করে। যেখান থেকে শুনেছি নায়াগ্রা প্রসেসররা মনে করছেন কোনও একরকম উন্নত পাইপলাইনিং কৌশল ব্যবহার করে একক কোরতে একাধিক থ্রেড পরিচালনা করতে সক্ষম হবেন। তবে এই প্রসেসরের সাথে আমার কোনও অভিজ্ঞতা নেই।


0

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

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