سؤال

أنا جديد على تطوير kernel وأحاول أن أفهم عن تصحيح kernel الجديد الجدول: آلي لكل مجموعات مهمة TTY .

هل يمكن لأحد أن يشرح باختصار ما الذي يفعله بالضبط؟

هل كانت مفيدة؟

المحلول

كان انطباعي عن التصحيح (الضوء على التفاصيل على الرغم من أن معظم المقالات عنها) هو أنه يمكن أن توازن بشكل متساوٍ من نسب وحدة المعالجة المركزية بطريقة تلقائية.

كان لجدولة Linux CFS تمامًا سلوكًا متوازنًا للمجموعة لفترة من الوقت. ما يعنيه هذا هو أنه إذا بدأ المستخدم A 500 مهمة ويبدأ المستخدم B واحد فقط ، فيجب أن توازن الإنصاف بين المستخدمون, وليس المهام.

تحقيقًا لهذه الغاية ، يجب أن تكون جميع الوظائف في مجموعة واحدة وجميع وظائف المستخدم B في أخرى ، وسيتم مشاركة وحدة المعالجة المركزية على قدم المساواة بينها - لا يحصل المستخدم A تشغيل المزيد من المهام.

ومع ذلك ، كان الإنصاف إما يعتمد على معرف المستخدم (الديناميكي) أو مجموعات التحكم (طريقة إعداد مؤلمة نسبيًا ثابتة).

ما يبدو أن هذا التصحيح يفعله هو تخصيص الوظائف تلقائيًا لمجموعة بناءً على tty. وبهذه الطريقة ، يصبح الفصل في المجموعة ميزة تلقائية (لا توجد مجموعات تحكم في إعداد) ، وتحدث على حبة أدق من معرف المستخدم (لأن أجهزة سطح المكتب النموذجية فقط لديك أحد المستخدمين يقومون بمعظم الوظائف ، على الأقل من غير المستخدمين غير المقيمين).

لذلك ، عندما يجلس Linus لتجميع النواة التالية بالنسبة لنا ، فإن عملية الإنشاء المتوازية بشكل كبير تحتوي على جميع مهامها في مجموعة واحدة ويمكن أن تطلق Linus بعد ذلك VLC لمشاهدة أحدث حلقة تظرية الانفجار العظيم (ليس لدي أي فكرة عما إذا كان يشاهد هذا العرض ، أو ما إذا كان لديه العديد من البرامج في صندوقه ، على الرغم من كل ما أعرفه ، فقد يقوم بتشغيل Windows Media Player تحت Windows 7) في مجموعة منفصلة تمامًا.

سيتم بعد ذلك مشاركة وحدة المعالجة المركزية نسبيًا بين الاثنين مجموعات, ، ولن يضطر Linus إلى مشاهدة Sheldon jerkly عبر الشاشة.

سيؤدي ذلك إلى إبطاء بناء kernel بالطبع ، ولكن ليس الأمر كما لو كانت هذه مهمة مهمة يقوم بها لنا. يمكننا الانتظار قليلاً إذا كان هذا يعني الحفاظ على مستويات عقله :-)

من ما قرأته (ورأيت) ، هذا كثيرا يحسن استجابة تطبيقات سطح المكتب. لا يمنحك المزيد من السعة الإجمالية ولكنه يحسن الأمور كثيرًا في سيناريوهات معينة.

بالطبع ، إذا كان ملف تعريف الاستخدام الخاص بك هو مهمة واحدة لكل TTY (أو جميع المهام في TTY واحد) ، فربما لن يساعد ذلك كثيرًا. ولكن ، إذا كان ذلك يحسن بعض السيناريوهات ولا يتحلل كثيرًا من الآخرين ، فسيكون ذلك فائزًا. وحتى لو يفعل تحلل الآخرين ، إنه سلوك قابل للتكوين ، لذلك من المحتمل أن يتسلل إلى kernel.


ومن المثير للاهتمام ، الآن بعد أن أصبح مرشح التصحيح هذا "وسائل الإعلام الرئيسية" ، هناك أشخاص يخرجون من الأعمال الخشبية قائلين إنه يمكنك القيام بـ نفس الشيء مع تعديلات على .bashrc وبعض التغيير والتبديل البسيط. هذا يلتف أساسًا أداة "آلية" حول مجموعات التحكم التي ذكرتها سابقًا.

لقد رفض Linus بالفعل حل أرض المستخدم لأنه يريد أن يكون شاذًا ، وهذا ليس شيئًا يجب على المستخدمين القيام به:

لأنه شيء نريد القيام به لجميع المستخدمين ، ولجميع القذائف ، وتأكد من القيام به تلقائيًا. بما في ذلك المستخدمين الذين لديهم توزيعات قديمة وما إلى ذلك ، ويسهل القيام به في مكان واحد. ثم تفعل ذلك لجميع الاستدلال الأخرى التي يمكننا رؤيتها بسهولة في النواة. ثم تفعل ذلك بطريقة سحرية دون أن يضطروا إلى ذلك تنويه.

فجأة ، لا يبدو أنه رائع أكثر من الآن للعب مع Bashrc ، أليس كذلك؟

هذا هو بيت القصيد. يمكننا دفع تغيير kernel ، وسيقوم كل شيء "فقط العمل". يمكننا أن نجعل هذه الميزة لدينا بالفعل في النواة مفيد.

التكوين على مستوى المستخدم لشيء يجب أن يعمل فقط أمر مزعج. يمكننا أن نفعل ما هو أفضل.

بعبارة أخرى: إذا وجدنا طريقة أفضل لفعل شيء ما ، فيجب علينا ذلك ليس قل "حسنًا ، إذا أراد المستخدمون ذلك ، فيمكنهم القيام بذلكu003Ctechnical thing here> ". إذا كانت هذه طريقة أفضل للقيام بشيء ما ، يجب أن نفعل ذلك فقط. مطالبة إعداد المستخدم هو ليس ميزة.

الآن ، أنا لا أقول أنه لا ينبغي لنا أن نسمح للمستخدمين باستخدام مجموعات Cgroups. بالطبع يمكنهم فعل الأشياء يدويًا أيضًا. لكن لا ينبغي لنا أن نطلب من المستخدمين القيام بأشياء سخيفة يمكننا القيام بها بسهولة أكبر.

إذا كان الخيار بين إخبار الجميع "يجب عليك القيام بذلك" ، و "يجب أن نفعل هذا من أجلك" ، سآخذ المرتبة الثانية في كل مرة. نحن نعلم أنه ينبغي القيام به. لماذا يجب أن نطلب من شخص آخر أن يفعل ذلك من أجلنا؟

يجب أن أتفق مع هذا الشعور - إذا سُمح لك فقط بإخبار المستخدم بأن عليهم القيام بشيء مميز لأداء إضافي ، فيمكنك فقط جعلهم يستخدمون "nice make -j64" عوضا عن "make -j64".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top