এমন কোনও বিল্ড সিস্টেম রয়েছে যা তুলনামূলকভাবে প্রত্যাশিত কাজের সময়সূচির সাথে যুক্ত করে?


13

এখানে আমার প্রশ্নের একটি ছোট উদাহরণ রয়েছে:

AD হিসাবে 4 টি স্বতন্ত্র কাজ নিয়ে একটি বিল্ড জব ধরে নিন consists এসি যোগফল তুলনায় ডি বেশি সময় নেয়।

একটি বিল্ড সিস্টেম যা আপেক্ষিক টাস্ক সময়গুলিকে অন্তর্ভুক্ত করতে পারে না তা এই জাতীয় কার্যগুলি নির্ধারণ করতে পারে:

---------------------------------------
CPU1: A  |    C   |
---------------------------------------
CPU2: B    | D                        |
---------------------------------------

বিপরীতে, শিডিয়ুলার যদি কার্যের সময়ের পার্থক্য সম্পর্কে অবগত থাকে তবে এটি এত সংক্ষিপ্ত সময়সূচী নিয়ে আসতে পারে:

---------------------------------------
CPU1: A  |  B    |   C   |
---------------------------------------
CPU2: D                        |
---------------------------------------

আমার প্রশ্নগুলো:

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

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

1
আমি মনে করি এটি একটি ভুল ধারণাটিকে ভিত্তি করে তৈরি করেছে যে কোনও কাজকে "বিল্ডিং" সমান্তরাল নয়।
dagnelies

বেশিরভাগ ক্ষেত্রে, কোনও কার্য তৈরি করা সত্যই অ সমান্তরাল, তবে হ্যাঁ, উদাহরণস্বরূপ, বহু-থ্রেডযুক্ত অ্যাপ্লিকেশনগুলিতে ইউনিট পরীক্ষাগুলি সমান্তরাল হতে পারে। আসলে, আমি যে প্রকল্পে কাজ করি সেখানে আমাদের সর্বদা ইউনিট পরীক্ষা পরিচালনার জন্য "-j1" দিয়ে "মেক" করতে হবে, কারণ অন্যথায় পারফরম্যান্স সম্পর্কিত মাল্টিকোর ইউনিট পরীক্ষা ব্যর্থ হয়।
juhist

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

উত্তর:


3

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

পারফরম্যান্স অনুকূলকরণে কাজ করার জন্য কিছু কাস্টম কাজের একটি উদাহরণ

https://veegens.wordpress.com/2013/03/26/tfs-2010-build-performance-report/


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

সমস্যা নেই, আপনি যা মিস করেছেন তা হ'ল আপনি প্রোগ্রামিংয়ের মাধ্যমে বিল্ড ক্রিয়া এবং বিল্ড প্রক্রিয়াটি কাস্টমাইজ করতে পারেন। নমুনাটি প্রতিবেদন করছিল, তবে যেমনটি বলা হয়েছে, ইতিহাসটি স্বয়ংক্রিয় অপ্টিমাইজেশনের জন্য নেওয়া হয়। এছাড়াও, নোট করুন যে আপনি সমান্তরাল বিল্ডগুলি কনফিগার করতে পারেন। তবে তারপরে আপনার অ্যালগরিদম অনুসরণ করে সেগুলি সমান্তরাল হয় তা নিশ্চিত করার জন্য আপনাকে কোডের সাহায্যে কাস্টমাইজ করতে হবে। কিছু অতিরিক্ত রেফারেন্স: dotnetcurry.com/visualstudio/1177/…
ব্রুনো গার্ডিয়া

2
@ ব্রুনোগার্ডিয়া: আপনি কী ব্যাখ্যা করতে পারবেন যে আপনার লিঙ্কের সেই নিবন্ধে একটি কাস্টমাইজেশন বিকল্প উল্লেখ করা হয়েছে যা বিল্ডিং কার্যগুলির প্রত্যাশিত কার্য সময়কে কাজে লাগাতে সহায়তা করতে পারে?
ডক ব্রাউন

0

এটি একটি ভুল অনুমানের উপর ভিত্তি করে একটি কাজকে "বিল্ডিং" সমান্তরাল নয়।

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

অন্য কথায়, পৃথক কাজগুলি সাধারণত সমান্তরাল (উদাহরণস্বরূপ সংকলন করার মতো) অর্ডার দেওয়ার বিষয়টি বিবেচনা করে না since


সম্পাদনা:

আসলে, "সিপিইউ 1 টাস্ক এ" এর এই ধারণাটিও ত্রুটিযুক্ত। এমনকি একক থ্রেডেড কাজের জন্য, ওএসগুলি প্রক্রিয়াগুলি / থ্রেডগুলি নির্ধারণ করে প্রতিটি প্রসঙ্গে স্যুইচ এ সিপিইউ থেকে সিপিইউতে আশা করতে পারে। আমার ধারণা, বেশিরভাগ বিল্ড সিস্টেমগুলি কেবলমাত্র সমান্তরালভাবে সমস্ত কাজ পরিচালনা করবে এবং ওএসকে সময়সূচীটি করতে দেয়। দীর্ঘ কাজগুলি আরও বেশি সময় নেবে এবং এটি প্রায়।

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

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


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

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

2
সি ++ বা সি বা ফোর্টরান বা অ্যাডায়ার জন্য সমস্ত নিখরচায় সফ্টওয়্যার সংকলক ( জিসিসি এবং কলং ...) মনো-থ্রেডযুক্ত। বিল্ড সিস্টেম ( make -j) সমান্তরালভাবে কয়েকটি সংকলন প্রক্রিয়া চালু করতে পারে।
বেসিল স্টারিনকিভিচ

@ বেসাইলস্টারিঙ্কেভিচ: ... সত্যই। মূলত, সকলেই বুদ্ধিমান ব্যবহার করে -j <nb-cores>তবে দুঃখজনকভাবে ডিফল্টটি এখনও "1" ... আমি এখনও অবাক হয়েছি এটি কখনই পরিবর্তিত হয়নি।
দাগনিগুলি

@ ডাগলিনিস: বিপুল সংখ্যক মেকফাইল রয়েছে যা কিছু সমালোচনামূলক নির্ভরশীলতা মিস করে এবং এইভাবে এনজেড 1 -jN এর সাথে কাজ করে না (বা কাজ করতে পারে না)।
juhist
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.