Linux实时调度策略(SCHED_RR)和CFS(SCHED_OTHER)之间的区别

2024-04-26 03:48

本文主要是介绍Linux实时调度策略(SCHED_RR)和CFS(SCHED_OTHER)之间的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文试图从直观角度,说明SCHED_RR调度策略和SCHED_OTHER调度策略之间的区别。

在Linux上,SCHED_OTHER和SCHED_NORMAL的意思相同,它们都是指的CFS调度策略,只不过,在内核中,CFS定义为SCHED_NORMAL,在用户态,CFS定义为SCHED_OTHER.

可参照内核头文件和musl libc头文件:

测试代码如下:

#include <string.h>
#include <pthread.h>
#include <sched.h>
#include <stdio.h>void *child_thread(void *arg)
{int policy = 0;int max_priority = 0,min_priority = 0;struct sched_param param;pthread_attr_t attr;struct sched_param sp;bzero((void*)&sp, sizeof(sp));pthread_attr_init(&attr);pthread_attr_setinheritsched(&attr,PTHREAD_EXPLICIT_SCHED);pthread_attr_getinheritsched(&attr,&policy);if(policy == PTHREAD_EXPLICIT_SCHED){printf("Inheritsched:PTHREAD_EXPLICIT_SCHED\n");}if(policy == PTHREAD_INHERIT_SCHED){printf("Inheritsched:PTHREAD_INHERIT_SCHED\n");}//pthread_attr_setschedpolicy(&attr,SCHED_RR);pthread_attr_setschedpolicy(&attr,SCHED_OTHER);pthread_attr_getschedpolicy(&attr,&policy);if(policy == SCHED_FIFO){printf("Schedpolicy:SCHED_FIFO\n");}if(policy == SCHED_RR){printf("Schedpolicy:SCHED_RR\n");}if(policy == SCHED_OTHER){printf("Schedpolicy:SCHED_OTHER\n");}max_priority = sched_get_priority_max(policy);min_priority = sched_get_priority_min(policy);printf("Maxpriority:%u\n",max_priority);printf("Minpriority:%u\n",min_priority);param.sched_priority = max_priority;pthread_attr_setschedparam(&attr,&param);sp.sched_priority = 1;// Actually set the sched params for the current thread.if (0 == pthread_setschedparam(pthread_self(), policy, &sp)) {printf("IO Thread #%ld using high-priority scheduler!", pthread_self());}printf("sche

这篇关于Linux实时调度策略(SCHED_RR)和CFS(SCHED_OTHER)之间的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/936636

相关文章

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

go 指针接收者和值接收者的区别小结

《go指针接收者和值接收者的区别小结》在Go语言中,值接收者和指针接收者是方法定义中的两种接收者类型,本文主要介绍了go指针接收者和值接收者的区别小结,文中通过示例代码介绍的非常详细,需要的朋友们下... 目录go 指针接收者和值接收者的区别易错点辨析go 指针接收者和值接收者的区别指针接收者和值接收者的

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

SpringRetry重试机制之@Retryable注解与重试策略详解

《SpringRetry重试机制之@Retryable注解与重试策略详解》本文将详细介绍SpringRetry的重试机制,特别是@Retryable注解的使用及各种重试策略的配置,帮助开发者构建更加健... 目录引言一、SpringRetry基础知识二、启用SpringRetry三、@Retryable注解

MySQL 分区与分库分表策略应用小结

《MySQL分区与分库分表策略应用小结》在大数据量、复杂查询和高并发的应用场景下,单一数据库往往难以满足性能和扩展性的要求,本文将详细介绍这两种策略的基本概念、实现方法及优缺点,并通过实际案例展示如... 目录mysql 分区与分库分表策略1. 数据库水平拆分的背景2. MySQL 分区策略2.1 分区概念