2012-02-29 2 views
1

コードでlinuxスケジューラからCPUを分離し、これを行う権限をユーザに与えることは可能ですか?そうすれば、rootでなくてもかまいません。私は今、システム内の他のすべてのプロセスからこのCPUを隔離したいsudoなしでコード内のCPUを分離しますか?

// set thread affinity to core 1 
cpu_set_t cpu_set; 
CPU_ZERO(&cpu_set); 
CPU_SET(1, &cpu_set); 
sched_setaffinity(tid, sizeof(cpu_set_t), &cpu_set); 

私はすぐに、プロセス/スレッドのCPUアフィニティを設定することができます。

私はマグロを使用してRedHatの上でこれを行うことができることを知っている:

sudo tuna --cpus 1 --isolate 
sudo tuna --cpus 3 --isolate 

私は次のように単離することが可能であることをどこかで読ん:

sudo echo 0 > /sys/devices/system/cpu/cpu1/online 
sudo echo 1 > /sys/devices/system/cpu/cpu1/isolated 
sudo echo 1 > /sys/devices/system/cpu/cpu1/online 

しかし、isolatedファイルを作成しようPermission denied

最後に、特定のユーザにCPUを隔離する権限を与える方法がありますか? /etc/security/limits.confの制限を増やす)あなたが言及/sys

username    hard  memlock   unlimited 
username    soft  memlock   unlimited 
username    -   rtprio   99 
+0

適切な機能を追加するには 'setfacl(1)'を使用することができますか?詳細は 'capabilities(7)'を確認してください。おそらく 'CAP_SYS_NICE'、' CAP_SYS_RESOURCE'、または 'CAP_SYS_ADMIN') – sarnold

答えて

0

ファイルが作成され、オペレーティングシステムによって自動的に維持されている - それは、ハードディスク上の仮想ファイルシステムではなく、通常のファイルであるので、あなたは、自分で作成することはできません。

あなたが言及した特定のファイルを担当するサブシステムは、「CPUホットプラグ」と呼ばれ、hereと記載されています。どうやら、この機能をサポートするカーネルが必要です。そのため、配布用にどのカーネルが利用可能かを調べるか(このオプションは、高度なサーバー用に設定されたカーネルでのみ可能です)、独自のコンパイルを行い、 "CPU hotplug" (CONFIG_HOTPLUG_CPU = y)が有効になっています。