RHEL 6 বনাম RHEL 5 এ উচ্চতর সিপিইউ ব্যবহারের কারণকে বিচ্ছিন্ন করা


9

আমি বর্তমানে আমাদের সিস্টেমটি RHEL 5 থেকে RHEL 6 এ স্থানান্তরিত করতে চাইছি, তবে আমি RHEL 6 মেশিনে অপ্রত্যাশিতভাবে উচ্চ সিপিইউ ব্যবহার সহ একটি ছিনতাই করেছি। এটি উপস্থিত হতে পারে যে অন্তত কিছুটা ক্ষেত্রে selectবাধাদানযোগ্য ঘুম ব্যবহারের কারণে এটি হতে পারে । আচরণের দেখায় এমন একটি সাধারণ উদাহরণ এখানে:

#include <sys/select.h>

int main()
{
  timeval ts;
  for (unsigned int ii=0; ii<10000; ++ii) {
    ts.tv_sec = 0;
    ts.tv_usec = 1000;
    select(0, 0, 0, 0, &ts);
  }

  return 0;
}

একটি RHEL 5 মেশিনে এটি 0% সিপিইউ ব্যবহারে থাকবে, তবে আরএইচইএল 6 ইনস্টল করা একই হার্ডওয়্যারটিতে এটি সিপিইউয়ের প্রায় 0.5% ব্যবহার করবে, সুতরাং যখন 30 থেকে 50 টি প্রোগ্রাম selectঘুম সঞ্চালনের জন্য চলছে তখন এটি খায় অকারণে সিপিইউয়ের বিশাল পরিমাণ।

আমি একটি বুগজিলা খুলেছি এবং আমি ওপ্রোফিল চালানোর চেষ্টা করেছি এবং কার্নেলের দিকে তাকানোর সময় এটি কেবল অ্যাপ্লিকেশনটির জন্য মূলত 100% এবং পোল_ইডলগুলিতে মাত্র 99% এর বেশি দেখায় (আমার নিষ্ক্রিয় বিকল্পগুলিতে আমার কাছে নিষ্ক্রিয় = পোল সেট রয়েছে যাতে সমস্ত কিছু ক্যাপচার করা যায়)।

উচ্চতর সিপিইউ ব্যবহারের কারণটি কী এবং আমি আলাদা করার জন্য আমি কী করতে পারি তার অন্য কোনও ধারণা?

আপডেট: আমি পারফেক্ট সরঞ্জামটি পেয়েছি এবং নিম্নলিখিত আউটপুট পেয়েছি:

# Events: 23K cycles
#
# Overhead  Command        Shared Object                                Symbol
# ........  .......  ...................  ....................................
#
    13.11%  test_select_sma  [kernel.kallsyms]    [k] find_busiest_group
     5.88%  test_select_sma  [kernel.kallsyms]    [k] schedule
     5.00%  test_select_sma  [kernel.kallsyms]    [k] system_call
     3.77%  test_select_sma  [kernel.kallsyms]    [k] copy_to_user
     3.39%  test_select_sma  [kernel.kallsyms]    [k] update_curr
     3.22%  test_select_sma  ld-2.12.so           [.] _dl_sysinfo_int80
     2.83%  test_select_sma  [kernel.kallsyms]    [k] native_sched_clock
     2.72%  test_select_sma  [kernel.kallsyms]    [k] find_next_bit
     2.69%  test_select_sma  [kernel.kallsyms]    [k] cpumask_next_and
     2.58%  test_select_sma  [kernel.kallsyms]    [k] native_write_msr_safe
     2.47%  test_select_sma  [kernel.kallsyms]    [k] sched_clock_local
     2.39%  test_select_sma  [kernel.kallsyms]    [k] read_tsc
     2.26%  test_select_sma  [kernel.kallsyms]    [k] do_select
     2.13%  test_select_sma  [kernel.kallsyms]    [k] restore_nocheck

দেখা যাচ্ছে যে সিপিইউর উচ্চতর ব্যবহারটি শিডিয়ুলারের। আমি একই সাথে এই 100 টি কিক করতে নীচের ব্যাশ স্ক্রিপ্টটিও ব্যবহার করেছি:

#!/bin/bash

for i in {1..100}
do
  ./test_select_small &
done

RHEL 5 এ সিপিইউ ব্যবহার 0% এর কাছাকাছি থাকে, তবে RHEL 6 এ ব্যবহারকারী এবং সিস্টে উভয়ই একটি অপ্রয়োজনীয় সিপিইউ ব্যবহারের পরিমাণ থাকে। এর আসল উত্সটি কীভাবে ট্র্যাক করা যায় এবং আশা করি এটি ঠিক করা যায় সে সম্পর্কে কোনও ধারণা?

আমি বর্তমান আর্ট লিনাক্স বিল্ড এবং উবুন্টু ১১.১০ এও এই পরীক্ষাটি ব্যবহার করে দেখেছি এবং একইরকম আচরণ দেখেছি, তাই এটি কেবল কোনও আরএইচএল ইস্যু নয়, কিছু ধরণের কার্নেল সমস্যা বলে মনে হয়।

আপডেট 2: আমি এটি আনতে কিছুটা সংকোচ করেছি কারণ আমি জানি যে এটি একটি বিশাল বিতর্ক, তবে আমি উবুন্টু ১১.১০-তে বিএফএস প্যাচগুলি দিয়ে একটি কার্নেল চেষ্টা করেছিলাম এবং এটি একই উচ্চ সিস্টেমের সিপিইউ ব্যবহারটি দেখায় নি (ব্যবহারকারী সিপিইউ ব্যবহার সম্পর্কে মনে হয়েছিল) একই).

এই উচ্চ সিপিইউ ব্যবহারটি সিপিইউ ব্যবহারের অ্যাকাউন্টিংয়ের ক্ষেত্রে কেবলমাত্র একটি পার্থক্য যা এটি কৃত্রিমভাবে উচ্চ দেখায়? বা সিএফএসের মাধ্যমে যদি আসল সিপিইউ চক্রটি চুরি হয়ে যায়?

আপডেট 3: এই প্রশ্নের সাথে জড়িত বিশ্লেষণটি সূচিদাতার সাথে সম্পর্কিত এমন কিছু বোঝায় যে , ফলাফলগুলি নিয়ে আলোচনা করার জন্য আমি একটি নতুন প্রশ্ন তৈরি করেছি ।

আপডেট: আমি অন্যান্য প্রশ্নের সাথে আরও কিছু তথ্য যুক্ত করেছি ।

আপডেট 5: আমি একটি সহজ পরীক্ষা থেকে অন্য প্রশ্নের সাথে কিছু ফলাফল যুক্ত করেছি যা এখনও বিষয়টি দেখায়।


দেখে মনে হচ্ছে রেডহ্যাট এটি জিএলআইবিসি-তে পিনপয়েন্ট করেছে। আপনি কি selectসেখানে সম্পর্কিত কোড-পরিবর্তনগুলি সন্ধান করেছেন ?
নিলস

আমি যখন বাগজিলাটি মূলত জমা দিয়েছিলাম তখন গ্লিবিসি শ্রেণীবদ্ধকরণ আমার দ্বারা করা হয়েছিল।
ডেভ জোহানসেন

আমার কাছে যুক্তিযুক্ত মনে হচ্ছে (কার্নেলের সমস্যাটির চেয়ে)। আপনি একাধিক সম ঘুমের সাথে একই রকম ফলাফল পান? উবুন্টু ১১.১০, আর্চ লিনাক্স এবং আরএইচইল 6 এর গ্লিবসি-সংস্করণগুলি কী কী?
নিলস

হ্যাঁ, পোল এবং ইউএস 1 এমএসের জন্য উভয়ই একই ফলাফল। গ্লিবিসি হিসাবে, আরএইচইল 5 2.5, আরহেল 6 হ'ল 2.12, উবুন্টু 11.10 2.13, এবং আমি বিশ্বাস করি খিলানটি 2.15 তবে আমার চেক করতে হবে।
ডেভ জোহানসেন

দেখে মনে হচ্ছে আপনি এই মূল প্রশ্নের উত্তর নিজেই পেয়েছেন। এখানে উত্তর হিসাবে পোস্ট করুন এবং এটির জন্য আপনার পয়েন্ট উপার্জন করুন!
নীল

উত্তর:


1

আপনি জিজ্ঞাসা:

এই উচ্চ সিপিইউ ব্যবহারটি সিপিইউ ব্যবহারের অ্যাকাউন্টিংয়ের ক্ষেত্রে কেবলমাত্র একটি পার্থক্য যা এটি কৃত্রিমভাবে উচ্চ দেখায়? বা সিএফএসের মাধ্যমে যদি আসল সিপিইউ চক্রটি চুরি হয়ে যায়?

আপনি যখন নিজের test_select_smallপ্রোগ্রামটি চালনার সময় কোনও সিপিইউ বেঞ্চমার্ক চালিয়েছেন এবং হোস্ট ওএস সংস্করণের উপর নির্ভর করে এর পারফরম্যান্স পরিবর্তন হচ্ছে কিনা তা যদি হয়?

প্রচুর পছন্দ রয়েছে: সর্বোত্তম পরামর্শটি সর্বদা "এমন কিছু ব্যবহার করুন যা আপনার বোঝার ধরণের প্রতিনিধিত্ব করে"। তবে শীতল বাচ্চারা সবসময় কেবল পোভ্রেই ব্যবহার করত


1
আমি মনে করি যে ধারণাটি আমি উল্লেখ করছি। আপনার কি এমন কোনও বেঞ্চমার্ক অ্যাপ্লিকেশনটির প্রস্তাবনা রয়েছে যা আমি ব্যবহার করতে পারি এমন ধারাবাহিক সময়ের ফলাফল দেয়?
ডেভ জোহানসেন

@ ডেভজোহানসেন - পোভ্রেতে যোগ করা নোট
ckhan

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