sched_getattr
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* sched_getattr [#xc39e4ea]
スケジューリングポリシーやパラメータを取得する
* スケジューリングポリシー [#q13174e2]
+ リアルタイムポリシー
++ SCHED_FIFO~
このポリシーは static priority scheduling (静的優先順位ス...
各スレッドの静的優先順位 (1[最低] から 99[最高] の間で) ...
このスレッドは、ブロックまたは終了するか、実行準備ができ...
++ SCHED_RR~
SCHED_FIFO ポリシーのラウンドロビン版。~
SCHED_RR スレッドも静的優先順位 (1 から 99 の間で) が与え...
優先順位が同じスレッドは、特定のクォンタム、または時間枠...
+ 通常のポリシー
++SCHED_OTHER/SCHED_NORMAL~
デフォルトのスケジューリングポリシー。~
静的優先順位は 0 で使用する。~
このポリシーは、Completely Fair Scheduler (CFS) を使って...
スケジューリングは、静的優先度 0 のリストから、このリスト...
++SCHED_BATCH~
SCHED_BATCH は静的優先度 0 でのみ使用できる。~
このポリシーは(nice 値に基づく)動的な優先度にしたがってス...
スケジューラはスレッドを呼び起こす毎にそのスレッドにスケ...
++SCHED_IDLE~
SCHED_IDLE は静的優先度 0 でのみ使用できる。~
このポリシーではプロセスの nice 値はスケジューリングに影...
非常に低い優先度でのジョブの実行を目的としたものである (...
参考:[[スケジューリング API の概要:https://linuxjm.osdn....
#highlight(c){{
#include <stdio.h>
#include <stdlib.h>
#include <sched.h>
#include <errno.h>
#include <unistd.h>
#include <sys/syscall.h>
typedef unsigned long long u64;
typedef unsigned int u32;
typedef int s32;
struct sched_attr {
u32 size;
u32 sched_policy;
u64 sched_flags;
/* SCHED_NORMAL, SCHED_BATCH */
s32 sched_nice;
/* SCHED_FIFO, SCHED_RR */
u32 sched_priority;
/* SCHED_DEADLINE */
u64 sched_runtime;
u64 sched_deadline;
u64 sched_period;
};
#define sched_getattr(pid, attr, size, flags) syscall(__N...
void get_prio(void)
{
int ret;
int policy;
struct sched_param param;
struct sched_attr attr;
policy = sched_getscheduler(0);
printf("policy = %d\n", policy);
ret = sched_getparam(0, ¶m);
if (ret == 0) {
printf("sched_priority = %d\n", param.sched_priority);
}
else {
perror("sched_getparam");
}
/*
* sched_getattr() は glibcラッパー関数がないので自分で ...
*/
ret = sched_getattr(0, &attr, sizeof(attr), 0);
if (ret == 0) {
printf("sched_policy = %d\n", attr.sched_policy);
printf("sched_nice = %d\n", attr.sched_nice);
printf("sched_priority = %d\n", attr.sched_priority);
}
else {
perror("sched_getattr");
}
}
int main(int argc, char **argv)
{
get_prio();
/* キー入力待ち */
getchar();
get_prio();
/* キー入力待ち */
getchar();
return 0;
}
}}
#highlight(end)
#ref(sched_get_prio.c)
実行結果
$ ./sched_get_prio
policy = 0
sched_priority = 0
sched_policy = 0
sched_nice = 0
sched_priority = 0
※ reniceで nice値を変えてみる
policy = 0
sched_priority = 0
sched_policy = 0
sched_nice = 1
sched_priority = 0
別のターミナルから renice を実行
$ cat /proc/`pidof sched_get_prio`/sched | grep -e polic...
sched_get_prio (93999, #threads: 1)
policy : ...
prio : ...
$ cat /proc/`pidof sched_get_prio`/stat | awk -F' ' '{pr...
20 0
$ sudo renice -n 1 -p `pidof sched_get_prio`
[sudo] ****** のパスワード:
93999 (process ID) old priority 0, new priority 1
$ cat /proc/`pidof sched_get_prio`/sched | grep -e polic...
sched_get_prio (93999, #threads: 1)
policy : ...
prio : ...
$ cat /proc/`pidof sched_get_prio`/stat | awk -F' ' '{pr...
21 1
#htmlinsert(amazon_pc.html);
終了行:
* sched_getattr [#xc39e4ea]
スケジューリングポリシーやパラメータを取得する
* スケジューリングポリシー [#q13174e2]
+ リアルタイムポリシー
++ SCHED_FIFO~
このポリシーは static priority scheduling (静的優先順位ス...
各スレッドの静的優先順位 (1[最低] から 99[最高] の間で) ...
このスレッドは、ブロックまたは終了するか、実行準備ができ...
++ SCHED_RR~
SCHED_FIFO ポリシーのラウンドロビン版。~
SCHED_RR スレッドも静的優先順位 (1 から 99 の間で) が与え...
優先順位が同じスレッドは、特定のクォンタム、または時間枠...
+ 通常のポリシー
++SCHED_OTHER/SCHED_NORMAL~
デフォルトのスケジューリングポリシー。~
静的優先順位は 0 で使用する。~
このポリシーは、Completely Fair Scheduler (CFS) を使って...
スケジューリングは、静的優先度 0 のリストから、このリスト...
++SCHED_BATCH~
SCHED_BATCH は静的優先度 0 でのみ使用できる。~
このポリシーは(nice 値に基づく)動的な優先度にしたがってス...
スケジューラはスレッドを呼び起こす毎にそのスレッドにスケ...
++SCHED_IDLE~
SCHED_IDLE は静的優先度 0 でのみ使用できる。~
このポリシーではプロセスの nice 値はスケジューリングに影...
非常に低い優先度でのジョブの実行を目的としたものである (...
参考:[[スケジューリング API の概要:https://linuxjm.osdn....
#highlight(c){{
#include <stdio.h>
#include <stdlib.h>
#include <sched.h>
#include <errno.h>
#include <unistd.h>
#include <sys/syscall.h>
typedef unsigned long long u64;
typedef unsigned int u32;
typedef int s32;
struct sched_attr {
u32 size;
u32 sched_policy;
u64 sched_flags;
/* SCHED_NORMAL, SCHED_BATCH */
s32 sched_nice;
/* SCHED_FIFO, SCHED_RR */
u32 sched_priority;
/* SCHED_DEADLINE */
u64 sched_runtime;
u64 sched_deadline;
u64 sched_period;
};
#define sched_getattr(pid, attr, size, flags) syscall(__N...
void get_prio(void)
{
int ret;
int policy;
struct sched_param param;
struct sched_attr attr;
policy = sched_getscheduler(0);
printf("policy = %d\n", policy);
ret = sched_getparam(0, ¶m);
if (ret == 0) {
printf("sched_priority = %d\n", param.sched_priority);
}
else {
perror("sched_getparam");
}
/*
* sched_getattr() は glibcラッパー関数がないので自分で ...
*/
ret = sched_getattr(0, &attr, sizeof(attr), 0);
if (ret == 0) {
printf("sched_policy = %d\n", attr.sched_policy);
printf("sched_nice = %d\n", attr.sched_nice);
printf("sched_priority = %d\n", attr.sched_priority);
}
else {
perror("sched_getattr");
}
}
int main(int argc, char **argv)
{
get_prio();
/* キー入力待ち */
getchar();
get_prio();
/* キー入力待ち */
getchar();
return 0;
}
}}
#highlight(end)
#ref(sched_get_prio.c)
実行結果
$ ./sched_get_prio
policy = 0
sched_priority = 0
sched_policy = 0
sched_nice = 0
sched_priority = 0
※ reniceで nice値を変えてみる
policy = 0
sched_priority = 0
sched_policy = 0
sched_nice = 1
sched_priority = 0
別のターミナルから renice を実行
$ cat /proc/`pidof sched_get_prio`/sched | grep -e polic...
sched_get_prio (93999, #threads: 1)
policy : ...
prio : ...
$ cat /proc/`pidof sched_get_prio`/stat | awk -F' ' '{pr...
20 0
$ sudo renice -n 1 -p `pidof sched_get_prio`
[sudo] ****** のパスワード:
93999 (process ID) old priority 0, new priority 1
$ cat /proc/`pidof sched_get_prio`/sched | grep -e polic...
sched_get_prio (93999, #threads: 1)
policy : ...
prio : ...
$ cat /proc/`pidof sched_get_prio`/stat | awk -F' ' '{pr...
21 1
#htmlinsert(amazon_pc.html);
ページ名: