আইসলকপাস সক্রিয় হয় কীভাবে সনাক্ত করবেন?


15

Isolcpus সক্রিয় করা আছে এবং কোন সিপাসে, উদাহরণস্বরূপ আপনি যখন প্রথমবার কোনও সার্ভারে সংযোগ স্থাপন করেন তবে কীভাবে তা সনাক্ত করবেন। শর্তাবলী:

কোথায় স্থানান্তরিত হবে তা দেখার জন্য কোনও প্রক্রিয়া তৈরি করছেন না।

ব্যবহারের ক্ষেত্রে হ'ল isolcpus=1-76 কোর আই 7-এ, বুট-এ আইসলকপাস সক্রিয় করা হয়নি বলে মনে হচ্ছে এবং আইসলকপাসের সক্রিয়করণের স্পষ্ট অবস্থান সরবরাহ করার জন্য /proc/, /sysঅথবা ইউজারস্পেসে পড়া কোনও কার্নেল ইন্টার্নাল থেকে এটি সম্ভব কিনা তা আমি জানতে চাই would এবং যা সিপিইউ উদ্বিগ্ন। অথবা এমনকি শিডিয়ুলারের সক্রিয় সেটিংটি পড়ুন যা আইসলকপাস দ্বারা প্রথমে উদ্বিগ্ন।

আপটাইমটি এত বড় যে বিবেচনা করুন, এটি dmesgআরম্ভের সময় কোনও ত্রুটি সনাক্ত করতে বুট লগ প্রদর্শিত হবে না। " কার্নেল সিএমডি লাইনের দিকে তাকান " এর মতো প্রাথমিক উত্তর গৃহীত হবে না :)


1
আপনি ব্যবহার করতে পারেন pidstat -C isolcpus। পিডস্ট্যাট sysstatপ্যাকেজ থেকে ।
তীমথিয় পুলিয়াম

2
আমি বোবা হতে পারি তবে আমি pidstatএবং এর মধ্যে কোনও লিঙ্ক দেখতে পাচ্ছি না isolcpus। আপনি কি আরও কিছু বিস্তারিত বলতে পারেন?
নেটমোনক

আপনি বলেছিলেন যে কমান্ডটি কী চলছে সে সম্পর্কে আপনাকে জানতে হবে। আমি কি জানি না isolcpus, কিন্তু pidstatআপনাকে বলে দিতে পারে CPU- র একটি প্রক্রিয়া যদি আপনি পাস চলছে -C process_nameপতাকা। উদাহরণস্বরূপ pidstat -C topনিম্নলিখিত উত্পাদন করে। 10:56:52 AM PID %usr %system %guest %CPU CPU Command 10:56:52 AM 3457 0.00 0.00 0.00 0.00 6 top
তীমথিয় পুলিয়াম

2
ঠিক আছে আপনার জবাবের জন্য আপনাকে ধন্যবাদ। isolcpusএকটি কার্নেল প্যারামিটার যা শিডিয়ুলারকে আলাদা করে দেওয়া হয় তবে কোনও প্রক্রিয়া নিজে থেকে মাইগ্রেট করতে বাধ্য করে। একটি 8 সিপিইউ সার্ভারের উদাহরণস্বরূপ, isolcpus=1-7কার্নেল কমান্ড লাইনে, শেল-এ থাকা কোনও প্রকার প্রক্রিয়া আর সিপু দ্বারা কেবল সিপিইউ-তে চলতে বাধ্য করা হবে। বিচ্ছিন্ন সিপিইউতে কোনও কাজ চালনার জন্য, আপনাকে tasksetউদাহরণ সহ এটি চালু করতে হবে । সুতরাং আমি যা জিজ্ঞাসা করছি সে সম্পর্কে, মনে হচ্ছে আপনার উত্তরটি বিষয়টির বাইরে। যাইহোক আমাকে উত্তর দেওয়ার চেষ্টা করার জন্য ধন্যবাদ
নেটমোনক

1
এরকম কিছু সত্যিই কঠিন হওয়া উচিত নয় ....
ব্যবহারকারীর 997112

উত্তর:


17

আপনি যা খুঁজছেন তা এই ভার্চুয়াল ফাইলের মধ্যে পাওয়া উচিত:

/sys/devices/system/cpu/isolated

এবং বিপরীত

/sys/devices/system/cpu/present    // Thanks to John Zwinck

থেকে drivers/base/cpu.cআমরা দেখতে উৎস প্রদর্শিত কার্নেল পরিবর্তনশীল cpu_isolated_map:

static ssize_t print_cpus_isolated(struct device *dev,
    n = scnprintf(buf, len, "%*pbl\n", cpumask_pr_args(cpu_isolated_map));
...
static DEVICE_ATTR(isolated, 0444, print_cpus_isolated, NULL);

এবং cpu_isolated_mapঠিক এটিই kernel/sched/core.cবুটে সেট হয়ে যায়:

/* Setup the mask of cpus configured for isolated domains */
static int __init isolated_cpu_setup(char *str)
{
    int ret;

    alloc_bootmem_cpumask_var(&cpu_isolated_map);
    ret = cpulist_parse(str, cpu_isolated_map);
    if (ret) {
            pr_err("sched: Error, all isolcpus= values must be between 0 and %d\n", nr_cpu_ids);
            return 0;
    }
    return 1;
}

কিন্তু আপনি পরিলক্ষিত, কেউ প্রক্রিয়ার সম্বন্ধ সংশোধন করেছেন পারে, ডেমন-উত্পন্ন হওয়া বেশী সহ cron, systemdইত্যাদি। যদি এটি হয়, নতুন প্রক্রিয়াগুলি সেট করা নয়, পরিবর্তিত অ্যাফিনিটি মাস্ক উত্তরাধিকার সূত্রে প্রাপ্ত হবে isolcpus

isolcpusআপনার অনুরোধ অনুসারে উপরেরগুলি আপনাকে দেবে , তবে এটি এখনও সহায়ক নাও হতে পারে।

ধরুন যে আপনি জেনেছেন যে এটি isolcpusজারি করা হয়েছে, তবে "নেওয়া হয়েছে" না, এই অনাকাঙ্ক্ষিত আচরণটি কেবলমাত্র বাধ্যতামূলকভাবে বুঝতে পেরে কিছু প্রক্রিয়া দ্বারা উদ্ভূত হতে পারে CPU=0, বিশ্বাস করে ভুলক্রমে এটি একচেটিয়া মোডে রয়েছে এবং "জিনিসগুলি সেট করার" সহায়তা করে অধিকার "অ্যাফিনিটি মাস্কটি পুনরায় সেট করে। যদি ঘটনাটি ঘটে থাকে তবে আপনি চেষ্টা করতে পারেন এবং 1-6 এর পরিবর্তে সিপিইউস 0-5 কে আলাদা করতে পারেন এবং দেখুন যে এটি কাজ করে কিনা।


1
সেন্টোস x.x এ পরীক্ষিত, নোট করুন যে /sys/devices/system/cpu/possibleআপনি কীভাবে 'বিপরীত' ব্যাখ্যা করেন তার উপর নির্ভর করে 'বিপরীত' বলে মনে হয় না। উদাহরণস্বরূপ, যদি তারা বিচ্ছিন্ন থাকায় .../cpu/isolatedফিরে আসে তবে ফিরে আসবে । 2,4.../cpu/possible0-191
বিগুরা

1
আমি মনে করি বেশিরভাগ লোকেরা /sys/devices/system/cpu/presentকোন সিপিইউ উপস্থিত থাকতে পারে তার চেয়ে /sys/devices/system/cpu/possibleকোন সিপিইউগুলি সম্ভবত উপস্থিত থাকতে পারে তা প্রদর্শন করবে (তবে বর্তমানে বিদ্যমান থাকতে পারে না) want কিছু সিস্টেমে সেগুলি একই, তবে আমি যাচাই করা একটি সুন্দর বেসিক ডেস্কটপেও তারা তা নয়।
জন জুইনক

পছন্দ করুন উত্তর সংশোধন করে
এলসার্নি

1
আইসলকপাস = 0 এবং 4 টি কোরের সাথে, আমি / বিচ্ছিন্ন = 0 এবং / বর্তমান = 0-3 পাচ্ছি।
স্টেফান রেইচ

10

রানটাইমের সময় কার্নেলটিতে কোন পরামিতিগুলি দেওয়া হয়েছিল তা দেখার isolcpusজন্য পরামর্শ নিচ্ছেন কিনা তা সনাক্ত করার একটি সহজ উপায় proc

তার জন্য, আপনি ব্যবহার করবেন:

$cat /proc/cmdline 
BOOT_IMAGE=/boot/vmlinuz-4.8.0-1-amd64 root=/dev/sda1 ro isolcpus=2,3 quiet

আপনি দেখতে পাচ্ছেন, এই বিশেষ উদাহরণটিতে isolcpus=2,3চলমান কার্নেলের পক্ষে যুক্তি হিসাবে পাস করা হয়েছিল।

আপনি tasksetপিআইডি-তে নির্দেশিত 1 টিও ব্যবহার করতে পারেন 1 পিআইডি 1 কার্নেল দ্বারা চালিত প্রথম টাস্কের জন্য স্ট্যান্ডার্ড পিআইডি হিসাবে, আমরা একটি isolcpusকার্যকরী ভাল ইঙ্গিত হিসাবে নিতে পারি যে এটি আমাদের কাজ করছে কিনা তা প্রতিফলিত করবে । যেমন:

$taskset -cp 1
pid 1's current affinity list: 0,1

lscpuএকই সার্ভারে কমান্ডের সাথে তুলনা করা :

$lscpu | grep CPU.s
CPU(s):                4
On-line CPU(s) list:   0-3
NUMA node0 CPU(s):     0-3

এটি দেখা যায়, lscpu4 সিপিইউ / কোর tasksetদেখায় , যখন কেবল 0,1 দেখায়, তাই এই শোগুলি isolcpusএখানে কাজ করছে।

এক নজরে দেখুন: চলমান প্রক্রিয়াটির জন্য একচেটিয়া সিপিইউ উপলব্ধতা কীভাবে নিশ্চিত করবেন?


স্যার আপনাকে উত্তর দেওয়ার জন্য ধন্যবাদ, তবে আমি এটি গ্রহণ করব না। আমি উল্লেখ করেছি যে কার্নেল কমান্ড লাইন সম্পর্কে কথা বলা উত্তর গ্রহণ করা হবে না। ফাইলটির /proc/cmdlineসামগ্রীর সঠিক কপি কোনটি তা আমি স্পষ্টতই জানি grub.conf। এই আমি জিজ্ঞাসা না কি! যাহোক তোমাকে ধন্যবাদ !
নেটমোনক

আমি উত্তর যুক্ত করেছি।
রুই এফ রিবেইরো

1
টাসসেটের সাহায্যে প্রসেসাসের স্নেহপূর্বে কেউ কী পরিবর্তন করেছেন? যদি কেউ কেবল সিপিইউ 0-র সাথে ডিআইএন অ্যাফিনিটি সেট করে তবে এটি আমাকে আইসোল সিপিইউ-এর অ্যাক্টিভেশন সম্পর্কে কোনও তথ্য দেয় বা না?
নেটমঙ্ক

1

সিপাসটি কী সংরক্ষিত রয়েছে তা দেখতে আপনি বর্তমান শেল প্রক্রিয়াটির জন্য সিপাস_নীলিত এবং সিপাস_নয়েড_লিস্ট পরীক্ষা করতে পারেন

cat /proc/$$/status|tail -6

যেমন

Cpus_allowed_list:      0-1, 3-5

এর অর্থ হল সিপিইউ = 2 isolcpusএকটি 6 সিপিএস সার্ভারের দ্বারা সংরক্ষিত ছিল


2
আসলে না. এটি দেখায় যে বর্তমান শেল প্রক্রিয়া দ্বারা উত্তরাধিকারসূত্রে প্রাপ্ত অ্যাফিনিটি মাস্কে সিপিইউ কী রয়েছে । যদি এটি ছিল, বলুন, sshএবং কেউ ম্যানুয়ালি sshdসিপিইউ 1-তে পিতামাতার সম্পর্ক সীমাবদ্ধ করে রেখেছিলেন তবে আপনি সর্বদা সিপিইউ 1 দেখতে পাবেন, isolcpus"নেওয়া" হয়েছে কিনা । $$শাখা আপনি প্রক্রিয়া উত্তরাধিকারসূত্রে মূল্যবোধ, মূল সিস্টেম বেশী দেয়।
LSerni
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.