কেন আমাদের আই / ও-র জন্য অপেক্ষা করতে হবে?


28

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

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

আসলে, আমি এই বিষয়টিকে একটি নিবন্ধেও পেয়েছি, সেখানে একটি স্নিপেট রয়েছে:

আই / ও অপেক্ষা 12.1%। এই সার্ভারটিতে 8 টি কোর রয়েছে (বিড়াল / প্রকোপ / সিপুইনফোর মাধ্যমে)। এটি খুব কাছাকাছি (1/8 কোর = 0.125)

সুতরাং মূলত এর অর্থ এটি কম্পিউটারকে অনেকটা কমিয়ে দিচ্ছে কেন, তা কেন? মানে ঠিক আছে, এখন সাধারণ কম্পিউটারটি কমপক্ষে 2 টি কোরে, কখনও কখনও 4 বা কখনও কখনও হাইপারথ্রেডিং বা এরকম কিছু কারণে থাকে। তবে এখন প্রশ্ন হল সিপিইউকে আসলে সেখানে কেন থাকতে হবে, কার্যত আইওয়ের অপেক্ষা না করে কার্যত অন্য কিছু করা হচ্ছে না কেন? আমি প্রক্রিয়া ম্যানাগমেন্টের প্রাথমিক ধারণা বা আর্কিটেকচার বলতে চাই, এখন আমি জানি না যে এটি ওএসই এর জন্য দায়ী, বা এটি হার্ডওয়ার অংশে নেমে এসেছে, তবে সিপিইউর জন্য অপেক্ষা করা বা সম্ভব করা উচিত বাস্তবে প্রচুর অন্যান্য কাজ সম্পাদন করার সময় এবং আইও প্রক্রিয়াটিতে ফিরে আসার সময় নিয়মিত পরীক্ষা করুন। আসলে, যদি এটি এমন একটি কঠিন কাজ এবং সিপিইউ অপেক্ষা করতে হয়, তবে কেন ' t যে হার্ডওয়ার দ্বারা আরও দক্ষতার সাথে পরিচালিত? উদাহরণস্বরূপ, এখানে কিছু ধরণের মিনি সিপিইউ থাকতে পারে যা কেবলমাত্র এটির জন্য অপেক্ষা করবে এবং প্রক্রিয়ায় ফিরে আসার সাথে সাথে তথ্যটির ছোট্ট অংশটি আসল সিপিইউতে সরবরাহ করবে এবং সুতরাং প্রক্রিয়াটি পুনরাবৃত্তি হবে এবং আমাদের নেই ব্যবহারিকভাবে ডেটা অনুলিপি প্রক্রিয়াটির জন্য একটি সম্পূর্ণ সিপিইউ কোর উত্সর্গ করা ... বা আমি এমন একজন হব যাকে এই জাতীয় জিনিস আবিষ্কার করা উচিত এবং এর জন্য নোবেল পুরষ্কার পাওয়া উচিত? : এস

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


41
"যখন এটি অন্য কিছু করতে পারে" - যেমন? এটি ডেটা দিয়ে কাজ করা প্রয়োজন। যদি সেই ডেটা সিপিইউ এল 1 ক্যাশে না থাকে তবে L2 ক্যাশে থেকে এটি আনতে হবে। যদি L2 ক্যাশে না থাকে তবে এটি L3 থেকে আনতে হবে (যদি এটি থাকে)। যদি এটি ডাই ক্যাশে একেবারেই না হয় তবে এটির প্রধান মেমরিটি অ্যাক্সেস করা দরকার। মূল স্মৃতিতে না থাকলে ... এইচডিডি অ্যাক্সেস করা দরকার।
ওডে

39
কম্পিউটার আছে আর কি কিছু; আইও অপারেশন সম্পূর্ণ না হওয়া পর্যন্ত কার্নেল থ্রেডটি ব্লক করে, অন্যান্য থ্রেড / প্রক্রিয়া চালিয়ে দেয়। তবে যদি সমস্ত কিছু ডিস্ক আইওতে অপেক্ষা করে থাকে, তবে আর কিছুই করার নেই।
কর্নেল তিরিশ দুই

6
প্রোগ্রামগুলি আই / ও টাওয়ারে পৌঁছানোর জন্য অপেক্ষা করতে হবে এবং তাদের ফ্রিসবি পাঠিয়ে দেবেন!
অলমো

1
@ ইমিবিস সঠিক! :)
অলমো

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

উত্তর:


19

আপনি যে আই / ও স্কিমগুলি বর্ণনা করছেন তা বর্তমানে কম্পিউটারে ব্যবহৃত হচ্ছে।

কেন কেবল সিপিইউকে সেখানে থাকতে হবে, ব্যবহারিকভাবে কেবল আইওয়ের অপেক্ষা না করে অন্য কিছু করা হচ্ছে না?

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

তবে সিপিইউর জন্য অপেক্ষা করা বা নিয়মিত যাচাই করা সম্ভব করা উচিত, যখন অন্যান্য প্রচুর কাজ সম্পাদন করা হয় এবং আইও প্রক্রিয়াটিতে ফিরে আসে তখনই এটি প্রস্তুত হয় it's

অনেক ব্যক্তিগত কম্পিউটারে অন্যান্য আই / ও স্কিম থাকে। ডিভাইসটি প্রস্তুত হওয়ার জন্য ব্যস্ত লুপের অপেক্ষার পরিবর্তে ( ব্যস্ত অপেক্ষা ), সিপিইউ আই / ও ডিভাইসটি চালু হয়ে গেলে বাধা তৈরি করতে জিজ্ঞাসা করে ( বিঘ্নিত চালিত আই / ও )।

যদিও বাধা-চালিত I / O এক ধাপ এগিয়ে (প্রোগ্রামযুক্ত I / O এর তুলনায়), এটি প্রতিটি চরিত্রের জন্য বাধা প্রয়োজন এবং এটি ব্যয়বহুল ...

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

অনেক সমস্যার সমাধান অন্য কারও কাজ করাতেই নিহিত! :-)

ডিএমএ নিয়ামক / চিপ (ডাইরেক্ট মেমোরি অ্যাক্সেস) প্রোগ্রামড আই / ওকে অনুমতি দেয় তবে অন্য কারও সাথে করে!

ডিএমএর সাহায্যে সিপিইউকে কেবল কয়েকটি রেজিস্ট্রার শুরু করতে হবে এবং স্থানান্তর শেষ না হওয়া পর্যন্ত এটি অন্য কিছু করতে মুক্ত হয় (এবং একটি বাধাপ্রাপ্ত হয় না)।

এমনকি ডিএমএ সম্পূর্ণ নিখরচায় নয়: উচ্চ গতির ডিভাইসগুলি মেমরি রেফারেন্স এবং ডিভাইস রেফারেন্সগুলির জন্য অনেকগুলি চক্র ব্যবহার করতে পারে ( চক্র চুরি করা ) এবং সিপিইউ অপেক্ষা করতে হবে (ডিএমএ চিপে সর্বদা উচ্চতর বাসের অগ্রাধিকার থাকে)।

আই / ও অপেক্ষা 12.1%। এই সার্ভারটিতে 8 টি কোর রয়েছে (বিড়াল / প্রকোপ / সিপুইনফোর মাধ্যমে)। এটি খুব কাছাকাছি (1/8 কোর = 0.125)

আমি মনে করি এটি থেকে: ডিসি I / O বোঝা - আপনার কখন উদ্বেগ হওয়া উচিত?

ওয়েল এটি আশ্চর্যের নয়: ডেটা ম্যানিপুলেট করার আগে সিস্টেম (মাইএসকিউএল) অবশ্যই সমস্ত সারি আনতে হবে এবং অন্যান্য ক্রিয়াকলাপ নেই।

এখানে কোনও কম্পিউটার আর্কিটেকচার / ওএস সমস্যা নেই। এটি ঠিক কীভাবে উদাহরণ সেট করা আছে।

বেশিরভাগ ক্ষেত্রে এটি আরডিবিএমএস টিউনিং সমস্যা বা এসকিউএল কোয়েরি সমস্যা (অনুপস্থিত সূচক, খারাপ জিজ্ঞাসা পরিকল্পনা, খারাপ কোয়েরি ...) হতে পারে)


24

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

তবে এর জন্য প্রয়োজন যে পড়ার সময় কার্যকর হওয়ার সময় আপনার কিছু করার দরকার ছিল এবং ফলাফলের জন্য আপনি যে বাফারটি পেরেছিলেন তা আপনাকে স্পর্শ করতে দেওয়া হবে না।

আপনি যখন ধরে নেন যে সবকিছু IO- কে ব্লক করছে তখন প্রোগ্রাম করাও অনেক সহজ।

আপনি যখন কোনও ব্লকিং রিড ফাংশনটি কল করেন আপনি জানেন যে কোনও কিছু পড়া না হওয়া অবধি এটি আর ফিরে আসবে না এবং এরপরে আপনি এর উপর প্রক্রিয়া শুরু করতে পারবেন।

টিপিক্যাল রিড লুপ একটি ভাল উদাহরণ

//variables that the loop uses
char[1024] buffer;
while((read = fread(buffer, 1024, 1, file))>0){
    //use buffer
}

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

void callback(void* buffer, int result, int fd, void* userData){
    if(result<=0){
    //done, free buffer and continue to normal processing
    }
    //use buffer

    int readID = async_read(fd, buffer, userData->buff_size);
    registerCallback(readId, callback, userData);
}

এর অর্থ হ'ল যে সমস্ত ফাংশন যা অ্যাসিঙ্ক রিড ব্যবহার করে শেষ হতে পারে তার একটি অ্যাসিঙ্ক ধারাবাহিকতা পরিচালনা করতে সক্ষম হওয়া দরকার। এটি বেশিরভাগ প্রোগ্রাম জুড়েই একটি অ-তুচ্ছ পরিবর্তন, আপনি যে বিষয়ে async C # তে প্রবেশ করার চেষ্টা করছেন লোকেদের জিজ্ঞাসা করুন।


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

আসল সমস্যাটি হ'ল হার্ডড্রাইভ এবং সিপিইউ উভয়ই র‌্যামের সাথে যোগাযোগের জন্য একই চ্যানেল ব্যবহার করে ; স্মৃতি বাস এবং যদি আপনি RAID ব্যবহার না করেন তবে কেবলমাত্র একটি একক ডিস্ক থেকে ডেটা পাওয়া যাবে। এটি আরও খারাপভাবে তৈরি করা হয় যদি আপনি কোনও গ্রাফিক্স নিবিড় অ্যাপ্লিকেশনও ব্যবহার করেন তবে জিপিইউর সাথে যোগাযোগের ক্ষেত্রেও হস্তক্ষেপ হবে।

অন্য কথায় আসল বাধা সম্ভবত সফ্টওয়্যারের পরিবর্তে হার্ডওয়্যারে রয়েছে।


6
"তবে সিঙ্ক্রোনাস আইও বনাম অ্যাসিনক্রোনাস আইও সাধারণ মন্দার কারণ নয়।" প্রশ্নটি বেসিকগুলি সম্পর্কে কেন আপনি কেন এই তুলনামূলকভাবে উন্নত বিষয়ে মনোযোগ দেওয়ার সিদ্ধান্ত নিয়েছিলেন?
সুইভ

1
আপনার সম্ভবত ডিএমএ সম্পর্কে কিছু উল্লেখ করা উচিত
আলেক টিল

2
মজাদার ঘটনা: আসলেই একটি পুরানো প্রক্রিয়া রয়েছে যা কলব্যাকগুলি মোকাবেলা না করেই আই / ও করার সময় প্রোগ্রামগুলিকে অন্য কিছু করতে দেয়; এটি থ্রেড বলা হয়
ব্যবহারকারী 253751

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

9

আপনার বিশ্বাস আছে যে I / O এর জন্য অপেক্ষা করার সময় অন্যান্য স্টাফের প্রসেসিংটি যথেষ্ট প্রবাহিত, যতটা সম্ভব সুচারিতের কাছাকাছি। আপনি যখন দেখেন যে আপনার কম্পিউটার কেবলমাত্র 12.1% সময়ের জন্য I / O এর জন্য অপেক্ষা করছে, তার অর্থ এই যে এটি আসলে সমান্তরালভাবে অন্যান্য অনেকগুলি কাজ করে। যদি সত্যিই অন্য কিছু না করে I / O এর জন্য অপেক্ষা করতে হয় তবে এটি 99.9% সময়ের জন্য অপেক্ষা করবে, এটি I / O এর চেয়ে ধীর।

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

সম্পাদনা করুন:

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

আপনি দেখুন, এটি যা ঘটছে: আপনার কম্পিউটারটি 99.99% সময় নিয়ে বসে আছে, কিছুই করছে না। আপনি যখন এটি করার জন্য কিছু দেন, এটি যায় এবং তা করে। এটি করতে গেলে এটি I / O এর জন্য অপেক্ষা করতে হবে, এটি সেখানে বসে অপেক্ষা করে। আই / ও করার সময় যদি এর অন্য কিছু করার থাকে তবে তাও তা করে। তবে যদি এটির আই / ও ছাড়া আর কিছু করার থাকে না, তবে এটি সেখানে বসে আই / ও শেষ হওয়ার জন্য অপেক্ষা করতে হবে। এসটিআই @ হোম-এ ভর্তি হওয়া ব্যতীত অন্য কোনও কাজ করার উপায় নেই।


ঠিক আছে, 12.1% উদাহরণটি একটি ওয়েবসাইট থেকে এবং উদাহরণটি 8 টি কোর সহ একটি সার্ভার থেকে নেওয়া হয়েছিল, ধারণাটি ছিল যে প্রায় একটি পুরো কোর কেবল সেই ক্রিয়াকলাপের জন্য সংরক্ষিত ছিল, নিশ্চিত যে অন্য কোরগুলি কিছু করতে এবং 8 কোরের সাথে স্বাধীন ছিল আপনি ভাল আছেন, কিন্তু যদি আপনার কেবল একটি একক কোর থাকে? : /
আরতুরাস এম

3
@ আর্টুরাসম হয় আপনি ওয়েবসাইটটি কী বলছেন তা ভুল বুঝেছেন বা ওয়েবসাইটের লেখক কিছু ভুল বুঝেছেন। কেবলমাত্র একটি কোর সহ একটি কম্পিউটার আই / ও-এর জন্য অপেক্ষা করতে কম সময় ব্যয় করবে (যেহেতু যে সমস্ত কাজগুলি আইওর জন্য অপেক্ষা করছে না, যেগুলি অন্য কোরগুলিতে সঞ্চালন করছে এবং একটি কোর নিষ্ক্রিয় অবস্থায় বসে আছে, সমস্তকে এককটির উপর চালনা করতে হবে মূল). I / O এর জন্য অপেক্ষা করা বা না হওয়া নির্দিষ্ট সময়ের জন্য সময় নেয় - এটির জন্য অপেক্ষা করার সময় থাকা সেই সময়ের সাথে অন্য কিছু না করার লক্ষণ।
র্যান্ডম 832

6

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

এটি কেবলমাত্র যদি অন্য কোনও থ্রেড বা অ্যাপ্লিকেশন না থাকে যা চলতে পারে যে আপনি প্রকৃতপক্ষে অপেক্ষা করার সময় সংগ্রহ করছেন। আপনি যে নিবন্ধটি উদ্ধৃত করেছেন (লিঙ্কটির জন্য @ ম্যানলিওকে ধন্যবাদ), এটি হ'ল: আপনার কাছে 12.1% অপেক্ষা বনাম ৮ 87.৪% অলস, যার অর্থ একটি কোর সম্পূর্ণরূপে I / O এর জন্য অপেক্ষা করছে যখন বাকী কিছু করছে না মোটেই সেই সিস্টেমটিকে কিছু করার জন্য অগ্রাধিকার দিন একাধিক কিছু দিন এবং অপেক্ষা শতাংশ হ্রাস পাবে।

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

লিনাক্স ব্যবহার করার সময়, আপনি যদি আরও I / O টি কাজ করেন তবে ওএসগুলি সম্পূর্ণ না হওয়া অবধি প্রায় অকেজো হয়ে যায়।

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

iotopI / O ক্ষমতা কীভাবে প্রক্রিয়াগুলিতে বরাদ্দ করা হয় তা দেখতে এবং প্রক্রিয়াগুলির ioniceজন্য I / O অগ্রাধিকার সেট করার মতো সরঞ্জামগুলি আপনি ব্যবহার করতে পারেন । উদাহরণস্বরূপ কোনও ডেস্কটপ মেশিনে আপনি সমস্ত বাল্ক ডেটা প্রসেসিংকে idleশিডিয়ুলিং ক্লাসে শ্রেণিবদ্ধ করতে পারেন , যাতে কিছু ইন্টারেক্টিভ অ্যাপ্লিকেশনটির I / O ব্যান্ডউইথের প্রয়োজন হয়, ইন্টারেক্টিভ অ্যাপ্লিকেশনটি সম্পন্ন না হওয়া পর্যন্ত বাল্ক প্রসেসিং স্থগিত হয়ে যায়।


5

এটি আপনার অ্যাপ্লিকেশন কোডের উপর নির্ভর করে। আমি মনে করি আপনার কোডটি লিনাক্সে চলছে।

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

আপনি ব্যবহার করতে পারে অ ব্লক আই , যেমন পাস O_NOBLOCKকরার খুলুন (2) ইত্যাদি ইত্যাদি ইত্যাদি ...; তারপরে আপনার পোল (2) এবং / অথবা SIGIO সিগন্যাল (7) ব্যবহার করা দরকার ... এবং পড়ার (2) ইত্যাদি EWOULDBLOCKথেকে ত্রুটিটি পরিচালনা করতে হবে ...

আপনি পসিক্স অ্যাসিঙ্ক্রোনাস আইও ব্যবহার করতে পারেন, দেখুন আইও (7)

ফাইল অ্যাক্সেসের জন্য, আপনাকে নির্দেশ দিতে পারে পৃষ্ঠা ক্যাশে সঙ্গে যেমন madvise (2) পর mmap (2) এবং posix_fadvise (2) ; লিনাক্স নির্দিষ্ট রিডহেডও দেখুন (2)

তবে আপনি শেষ পর্যন্ত কিছু হার্ডওয়্যার বাধা (বাস, র‌্যাম, ইত্যাদি ...) পৌঁছে যাবেন। আরও দেখুন ionice (1)


1

আমি অন্যদের চেয়ে অন্য দৃষ্টিভঙ্গি যুক্ত করছি, সম্ভবত বিতর্কিত:

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

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

দ্রষ্টব্য: আমি বলছি না যে লিনাক্সের তুলনায় উইন্ডোজ ভাল, আমি তাদের বলি যে তাদের সামগ্রিক ভিন্ন দর্শন রয়েছে, যা জটিল পরিবেশে এই সিস্টেমগুলির বিভিন্ন উচ্চ স্তরের আচরণ / অনুভূতি সৃষ্টি করতে পারে।


লিনাক্স মাউস ল্যাগ সম্ভবত সিস্টেমের সতর্কতার সাথে কনফিগারেশন (যেমন ব্যবহার niceএবং ioniceক্ষুধার্ত প্রক্রিয়াগুলি ব্যবহার করে ) এড়ানো বা হ্রাস করা যেতে পারে । এবং আমি লিনাক্স ব্যবহার করি এবং লিনাক্স মাউস
ল্যাগটি

বিটিডাব্লু, লিনাক্স বেশিরভাগই একটি সার্ভার ওএস।
বেসিল স্টারিনকিভিচ

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