প্রযুক্তিগতভাবে, এরলংয়ে প্রক্রিয়াগুলি ওএস থ্রেডের চেয়ে বেশি দক্ষ কেন?


170

এরলং এর বৈশিষ্ট্য

থেকে Erlang প্রোগ্রামিং (2009):

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

এরলং (পিডিএফ) (স্লাইড) (2003)-এ কনকুরન્સી ওরিয়েন্টেড প্রোগ্রামিং থেকে :

আমরা পর্যবেক্ষণ করেছি যে এরলং প্রক্রিয়া তৈরি করতে যে সময়টি নেওয়া হয়েছে তা ধীরে ধীরে 1 2, 2,500 প্রক্রিয়া পর্যন্ত; এরপরে এটি 30,000 প্রসেসের জন্য প্রায় 3µs পর্যন্ত বৃদ্ধি পায়। জাভা এবং সি # এর কর্মক্ষমতা চিত্রের শীর্ষে দেখানো হয়েছে। অল্প সংখ্যক প্রক্রিয়াগুলির জন্য একটি প্রক্রিয়া তৈরি করতে প্রায় 300µs সময় লাগে। দুই হাজারেরও বেশি প্রক্রিয়া তৈরি করা অসম্ভব।

আমরা দেখতে পাই যে ৩০,০০০ প্রসেসের জন্য দুটি ইরং প্রসেসের মধ্যে একটি বার্তা প্রেরণের সময়টি প্রায় 0.8µs। সি # এর জন্য এটি প্রতি বার্তায় প্রায় 50µs লাগে, সর্বাধিক সংখ্যক প্রক্রিয়া (যা প্রায় 1800 প্রক্রিয়া ছিল) অবধি। জাভা আরও খারাপ ছিল, 100 টি প্রক্রিয়া পর্যন্ত এটি প্রতি বার্তায় প্রায় 50µs নিয়েছিল তারপরে এটি যখন প্রায় 1000 জাভা প্রক্রিয়া ছিল তখন তা বার্তা প্রতি 10 মিমি হয়ে দ্রুত বৃদ্ধি পেয়েছিল।

আমার চিন্তা

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

কেবল কেন ওআর থ্রেডগুলি এরলংয়ের প্রক্রিয়াগুলির মতো একইভাবে প্রয়োগ করা হয় না? তাদের কি আরও কিছু সমর্থন করতে হবে? এবং কেন তাদের আরও বড় মেমরির ছাপ দরকার? এবং কেন তাদের ধীরে ধীরে স্পোনিং এবং যোগাযোগ রয়েছে?

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

আরও পড়া


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

1
@ ডোনাল: অন্যান্য অনেক নিখুঁত বিবৃতিতে যেমন রয়েছে। :-)
টিজে ক্রাউডার

1
@ জোনাস: ধন্যবাদ, তবে আমি তারিখটি পেয়েছি (1998-11-02) এবং জেভিএম সংস্করণ (1.1.6) এবং বন্ধ হয়ে গেছে। সান এর জেভিএম গত 11.5 বছরে (বিশেষত থ্রেডিংয়ের ক্ষেত্রের ক্ষেত্রে এবং এরলং এর দোভাষীরও সম্ভবত রয়েছে) বেশ কিছুটা উন্নতি হয়েছে । (কেবল পরিষ্কার বলতে গেলে, আমি বলছি না যে অনুমানটি সত্য নয় [এবং ফ্রান্সিসকো এবং ডোনাল নির্দেশ করেছেন কেন কেন আর্ল্যান্ড সেখানে কিছু করতে সক্ষম হতে পারে]; আমি বলছি এটির মুখের মূল্য নেওয়া উচিত নয়) চেক না করেই))
টিজে ক্রাউডার

1
@ জোনাস: "... তবে আমি অনুমান করি আপনি এর্লং এ এটি করতে পারবেন ..." এটি "অনুমান" অংশ, ডুড। :-) আপনি অনুমান করছেন যে এরলংয়ের প্রক্রিয়াটি কয়েক হাজারেরও বেশি হয়ে গেছে a আপনি অনুমান করছেন যে এটি জাভা বা ওএস থ্রেডের চেয়ে আরও ভাল করে। অনুমান এবং সফ্টওয়্যার দেব কোনও দুর্দান্ত সমন্বয় নয়। :-) তবে আমি মনে করি আমি আমার বক্তব্য তৈরি করেছি।
টিজে ক্রাউডার 13

17
@ টিজে ক্রাউডার: এরং ইনস্টল করুন এবং রান করুন erl +P 1000100 +hms 100এবং টাইপ করুন {_, PIDs} = timer:tc(lists,map,[fun(_)->spawn(fun()->receive stop -> ok end end) end, lists:seq(1,1000000)]).এবং ফলস্বরূপ প্রায় তিন মিনিট অপেক্ষা করুন। এটা খুব সহজ। এটি প্রতি প্রক্রিয়ায় 140us এবং খনি ল্যাপটপে 1 গিগাবাইট পুরো র‍্যাম লাগে। তবে এটি সরাসরি ফর্ম শেল, এটি সংকলিত কোড থেকে ভাল হওয়া উচিত।
হায়েনেক-পিচি- ভ্যাচোডিল

উত্তর:


113

অবদান রাখার বিভিন্ন কারণ রয়েছে:

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

6
আপনার ২ য় পয়েন্টে: এবং যদি প্রক্রিয়াটি এখনও চালিত না হয় তবে এর জন্য স্ট্যাক বরাদ্দ করার কোনও কারণ নেই। তদ্ব্যতীত: কোনও প্রক্রিয়াটির জিসির সাথে পাল্লা দিয়ে বেশ কয়েকটি কৌশল বাজানো যেতে পারে যা এটি কখনও স্মৃতি সংগ্রহ করে না। তবে এটি উন্নত এবং কিছুটা বিপজ্জনক :)
আমি

3
আপনার তৃতীয় বিন্দুতে: এরলং অপরিবর্তনীয় ডেটা প্রয়োগ করে, সুতরাং এসএমপি প্রবর্তন থ্রেড-সুরক্ষাকে প্রভাবিত করবে না।
নীলস্কেপ

@ নীলস্কেপ, ঠিক আছে, এরংও একটি কার্যকরী প্রোগ্রামিং ভাষা। সুতরাং "পরিবর্তনশীল" ডেটা নেই th এটি থ্রেড-সুরক্ষার দিকে নিয়ে যায়।
Liuyang1

6
@ নীলস্কেপি: (আরই: আপনি পয়েন্ট 3-তে মন্তব্য করেছেন) যদিও ভাষাটি নিজেই একটি অপরিবর্তনীয় টাইপ সিস্টেম রয়েছে তবে অন্তর্নিহিত বাস্তবায়ন - বার্তা পাসিং, শিডিয়ুলার ইত্যাদি - পুরোপুরি আলাদা গল্প। সঠিক এবং দক্ষ এসএমপি সমর্থনটি কেবল একটি স্যুইচ এর ঝাঁকুনির সাথে ঘটেনি।
মার্সেলো ক্যান্টোস

@ আরভির্ডিং: স্পষ্টকরণ সংযোজনের জন্য ধন্যবাদ আমি আপনার উত্তরগুলিকে আমার পয়েন্টগুলিতে সংহত করার জন্য স্বাধীনতা নিয়েছি।
মার্সেলো ক্যান্টোস

73

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

থেকে এরলং - সমবর্তী বিশ্বের জন্য সফ্টওয়্যার (উপস্থাপনা) (13 মিনিটে):

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

আপনি যদি আপনার মেশিনে আরও মেমরি যোগ করেন - আপনার কাছে একই সংখ্যক বিট রয়েছে যা মেমরিটিকে রক্ষা করে যাতে পৃষ্ঠাগুলির টেবিলগুলির গ্রানুলারিটি উপরে যায় পৃষ্ঠাগুলির - আপনি কয়েকশ বাইটে চলমান জানেন এমন একটি প্রক্রিয়াটির জন্য আপনি 64kB বলুন using

আমি মনে করি এটির উত্তর না থাকলে কমপক্ষে আমার কয়েকটি প্রশ্নের উত্তর



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

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

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

1
ওএস / 400 অপারেটিং সিস্টেম একইভাবে কাজ করে। সমস্ত প্রোগ্রামের জন্য একটি একক ফ্ল্যাট ঠিকানার স্থান রয়েছে। এবং প্রকৃত ব্যবহারের বেশিরভাগ ভাষায় একই সুরক্ষা বৈশিষ্ট্য রয়েছে (ইসিএমএসক্রিপ্ট, জাভা, সি, ভিবি.এনইটি, পিএইচপি, পার্ল, পাইথন, রুবি, ক্লোজার, স্কালা, কোটলিন, গ্রোভি, সিলোন, ফা, ওক্যামল, "অবজেক্টিভ" অংশ "অবজেক্টিভ-সি", "সি ++" এর "++" অংশ)। এটি যদি লিগ্যাসি সি কোড এবং সি ++ এবং উদ্দেশ্য-সি এর উত্তরাধিকার বৈশিষ্ট্যগুলির জন্য না হয় তবে আমাদের আর ভার্চুয়াল মেমরির প্রয়োজনও পড়বে না।
জার্গ ডব্লু মিট্টাগ

47

আমি এসেম্বেলারে কর্টিনগুলি প্রয়োগ করেছি এবং পরিমাপের পারফরম্যান্স করেছি।

Coroutines, ওরফে এরলং প্রক্রিয়াগুলির মধ্যে স্যুইচিংয়ে আধুনিক প্রসেসরের প্রায় 16 টি নির্দেশনা এবং 20 ন্যানোসেকেন্ড লাগে। এছাড়াও, আপনি প্রায়শই যে প্রক্রিয়াটিতে স্যুইচ করছেন তা আপনি জানেন (উদাহরণস্বরূপ: এর কাতারে একটি বার্তা প্রাপ্ত একটি প্রক্রিয়া কলিং প্রক্রিয়া থেকে গ্রহণ প্রক্রিয়াতে সরাসরি হ্যান্ড-অফ হিসাবে প্রয়োগ করা যেতে পারে) সুতরাং শিডিয়ুলার কার্যকর না হয়ে তৈরি করে তোলে এটি একটি ও (1) অপারেশন।

ওএস থ্রেডগুলিতে স্যুইচ করতে, এটি প্রায় 500-1000 ন্যানোসেকেন্ড লাগে, কারণ আপনি কার্নেলটিতে নামাচ্ছেন। ওএস থ্রেড শিডিয়ুলার ও (লগ (এন)) বা ও (লগ (লগ (এন))) সময়ে চলতে পারে, যা আপনার লক্ষ লক্ষ বা এমনকি কয়েক মিলিয়ন থ্রেড থাকলে লক্ষণীয় হতে শুরু করবে।

অতএব, এরলং প্রক্রিয়াগুলি দ্রুত এবং স্কেল আরও ভাল কারণ উভয় স্যুইচিংয়ের মৌলিক ক্রিয়াকলাপ দ্রুততর হয় এবং শিডিয়ুলারটি প্রায়শই কম সঞ্চালিত হয়।


33

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

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


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

বিভিন্ন উপায়ে, আসল সমস্যাটি হল পরিভাষার একটি। যে বিষয়গুলি এরলং প্রসেসগুলি কল করে (এবং যা সিএসপি, সিসিএস এবং বিশেষত π-ক্যালকুলাসে একই ধারণার সাথে দৃ correspond়ভাবে মিল রয়েছে) কেবল সি উত্তরাধিকারের সাথে যে ভাষাগুলি ভাষা হিসাবে থাকে সেগুলির মতো নয় (সি ++, জাভা, সি #, এবং আরও অনেক) একটি প্রক্রিয়া বা একটি থ্রেড কল। আছে কিছু মিল (সমস্ত সমবর্তী সঞ্চালনের কিছু ধারণা জড়িত) কিন্তু স্পষ্টভাবে কোন সমানতা আছে। সুতরাং কেউ যখন আপনাকে "প্রক্রিয়া" বলে তখন সাবধান হন; তারা একেবারে আলাদা কিছু বোঝার জন্য এটি বুঝতে পারে ...


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

এটি পাই-ক্যালকুলাসকে ঠিক কী হিসাবে দেখছেন তার উপর নির্ভর করে (এবং আপনি সিঙ্ক্রোনাস চ্যানেল প্লাস বাফার প্রক্রিয়াগুলির সাথে অ্যাসিনক্রোনাস চ্যানেলগুলি মডেল করতে পারেন)।
ডোনাল ফেলো

আপনি কেবল বলছেন যে এরলং প্রক্রিয়াগুলি হালকা ওজনের তবে তারা কেন ছোট পায়ের ছাপ (লাইটওয়েট) এবং ওএস থ্রেডের তুলনায় কেন তাদের আরও ভাল পারফরম্যান্স রয়েছে তা আপনি ব্যাখ্যা করছেন না।
জোনাস

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

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

3

আমি মনে করি জোনাস ওআর থ্রেডকে এরলং প্রক্রিয়ার সাথে তুলনা করার জন্য কিছু নম্বর চেয়েছিল। প্রোগ্রামিং এরলংয়ের লেখক জো আর্মস্ট্রং কিছুক্ষণ আগে ওএস থ্রেডগুলিতে এরলং প্রসেসের স্প্যানিংয়ের স্কেলিবিলিটি পরীক্ষা করেছিলেন। তিনি এরলংয়ে একটি সাধারণ ওয়েব সার্ভার লিখেছেন এবং এটি বহু-থ্রেডযুক্ত অ্যাপাচি (যেহেতু অ্যাপাচি ওএস থ্রেড ব্যবহার করে) এর বিপরীতে পরীক্ষা করেছেন। 1998 এর পুরানো ডেটা সহ একটি পুরাতন ওয়েবসাইট রয়েছে I've আমি কেবলমাত্র সেই সাইটটি ঠিক একবার খুঁজে পেতে পরিচালনা করেছি। সুতরাং আমি একটি লিঙ্ক সরবরাহ করতে পারি না। কিন্তু তথ্য আছে। গবেষণার মূল বিষয়টি দেখায় যে অ্যাপাচি মাত্র 8 কে প্রসেসের আওতায় সর্বাধিক বাইরে চলে গেছে, যখন তার হাতে লেখা এরিং সার্ভার 10K + প্রসেস পরিচালনা করে।


5
আমি মনে করি আপনি এটি সম্পর্কে কথা বলছেন: sics.se/~joe/apachevsyaws.html তবে আমি জিজ্ঞাসা করেছি কীভাবে কার্লেনেল থ্রেডের তুলনায় এরলং থ্রেডকে এত দক্ষ করে তোলে।
জোনাস

@ জোনাস লিঙ্কটি মারা গেছে। শেষ স্ন্যাপশটটি এখানে রয়েছে
alvaro g

1
নিবন্ধে বলা হয়েছে: "অ্যাপাচি প্রায় 4,000 সমান্তরাল সেশনে মারা যায়। ইয়াও এখনও ৮০,০০০ এর বেশি সমান্তরাল সংযোগে কাজ করছে।"
নাথান লং

citeseerx.ist.psu.edu/viewdoc/… এ সম্পূর্ণ নিবন্ধটি দেখুন, প্রকৃতপক্ষে, 16 আক্রমণকারী মেশিন ব্যবহার করে এরলং সার্ভারটি ভাঙ্গা অসম্ভব প্রমাণিত হয়েছিল - যদিও অ্যাপাচি সার্ভারটি বন্ধ করা সহজ ছিল।
বার্নহার্ড

1

যেহেতু এরলং দোভাষীকে কেবল নিজের সম্পর্কেই চিন্তা করতে হবে, ওএসের আরও অনেক বিষয় চিন্তা করতে হবে।


0

এর অন্যতম কারণ হ'ল এরিং প্রক্রিয়াটি ওএস-এ নয়, তবে এভিএম-এ (এরং ভার্চুয়াল মেশিন) তৈরি করা হয়, সুতরাং ব্যয়টি আরও কম হয়।

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