• 2024-09-14Go runtime 调度器精讲(五):调度策略
    原创文章,欢迎转载,转载请注明出处,谢谢。0.前言在第四讲我们介绍了maingoroutine是如何运行的。其中针对maingoroutine介绍了调度函数schedule是怎么工作的,对于整个调度器的调度策略并没有介绍,这点是不完整的,这一讲会完善调度器的调度策略部分。1.调度时间点runtim
  • 2024-09-13Go runtime 调度器精讲(三):main goroutine 创建
    原创文章,欢迎转载,转载请注明出处,谢谢。0.前言回顾下上一讲的内容。主线程m0蓄势待发,准备干活。g0为m0提供了执行环境,P和m0绑定,为m0提供活,也就是goroutine。那么问题来了,活呢?哪里有活给m0干?这一讲我们将介绍m0执行的第一个活,也就是maingoroutine。maingou
  • 2024-09-07CPU亲和性设置视频解析,代码示例 sched_setaffinity sched_getaffinity, CPU_ZERO、CPU_SET、CPU_ISSET、CPU_CLR
    视频教程在这:cpu亲和性设置,NCCL,sched_setaffinitysched_getaffinity,CPU_ZERO、SET、ISSET、linux_哔哩哔哩_bilibili一、CPU亲和性简介CPU亲和性(CPUAffinity)设置是操作系统中一个重要的性能优化手段,它允许程序或进程被绑定到特定的CPU核心上运行。这样做的好处包括减少缓存未命中
  • 2024-08-25掌握时间的艺术:Python的sched库深度解析
    文章目录掌握时间的艺术:Python的sched库深度解析背景:为何选择sched?什么是sched库?如何安装sched库?简单库函数使用方法1.创建调度器实例2.安排事件3.取消事件4.运行调度器5.检查事件是否在队列中场景应用1.定时提醒2.定时备份3.定时关闭程序常见Bug及解决方案1.
  • 2024-07-24cpu proc sys文件系统下的含义
    proc文件系统(/proc/sys/kernel/)sched_child_runs_first/proc/sys/kernel/sched_child_runs_first是Linux内核中的一个配置文件,它用于控制调度器如何处理新创建的进程(即子进程)与它们的父进程之间的关系。功能说明:sched_child_runs_first:这个文件的值决定了当一个新进程(子进
  • 2024-07-24Linux获取线程调度策略pthread_attr_getschedpolicy
    thread_attr_getschedpolicy 函数是POSIX线程(pthread)库中用于获取线程属性对象中的调度策略的函数。在实时系统中,调度策略决定了线程如何被调度器选择来执行。pthread_attr_getschedpolicy 函数允许你查询一个已创建的线程属性对象(pthread_attr_t 类型)中设置的调度策略
  • 2024-06-11Go语言goroutine调度器初始化
    1、调度器初始化调用点:src/runtime/asm_amd64.s:349 -> CALLruntime·schedinit(SB)runtime/proc.go:526funcschedinit(){//raceinitmustbethefirstcalltoracedetector.//Inparticular,itmustbedonebeforemallocinitbelowcallsracemapshadow.
  • 2024-06-07进程间通信九天学习笔记
    进程间通信九天学习笔记day1:基本进程操作fork()返回pid进程idgetpid()获取当前进程IDsystem()执行系统命令day2:管道匿名管道pipe(intpipefd[2])pipefd[0]读操作pipefd[1]写操作有名管道(FIFO)mkfifo(,0644)open()read()write()day3:信号标准
  • 2024-05-25tracer ftrace笔记(4)—— events.rst 翻译
    基于msm-5.4Android-12一、翻译=============事件追踪=============:作者:TheodoreTs'o:更新:李泽凡和汤姆·扎努西 1.简介===============无需创建自定义内核模块即可使用跟踪点(请参阅Documentation/trace/tracepoints.rst)来使用事件跟踪基础设施注册探测函数。并非
  • 2024-05-07随笔-调试-perf on-cpu off-cpu
    perfon-cpuxpid=$(cat/var/run/xx.pid);perfrecord-F99-p$xpid--call-graphdwarf--sleep60直接在控制台上查看:perfreport或者生成火焰图:perfscript--header>out.stacks/opt/FlameGraph/stackcollapse-perf.pl<out.stacks|/opt/FlameGraph/flamegraph.
  • 2024-04-03调研:如何基于Linux平台实现自主设计的调度器
    如果能在linux操作系统上实现自主设计的调度算法,那么现在实时领域的研究或许还有意义吧。基于linux操作系统,调整调度算法的方法大致分为两种:小调:调整Linux内核提供的14个调度器参数。在Linux内核中,当前定义了五个调度策略:NORMAL(CFS)、FIFO、RR、BATCH、IDLE。SCHED_NORMAL(
  • 2024-03-11在Linux中,什么时候需要用到进程的优先级?
    在Linux系统中,进程的优先级是一个重要的调度参数,用于决定操作系统如何分配CPU时间给不同的进程。以下是几个需要调整或考虑进程优先级的情况:关键服务或任务:对于一些关键的系统服务或者对实时性要求较高的应用,如数据库服务器、实时控制系统、高性能计算任务等,我们可能需要提升
  • 2024-03-08随笔-perf off-cpu 原理
    off-cpu:view#testincentos7echo1|sudotee/proc/sys/kernel/sched_schedstatsperfrecord-esched:sched_stat_sleep-esched:sched_switch-esched:sched_process_exit-p$(cat/var/run/cs.pid)-g-operf.data.rawsleep10perfinject-v-s-iperf.
  • 2024-03-05调度器56—1-deadline文档翻译
    注:本文翻译自msm-5.4/Documentation/scheduler/sched-deadline.rst=======================Deadline任务调度=======================..内容0.警告1.概述2.调度算法2.1主要算法2.2带宽回收3.调度实时任务3.1定义3.2单处理器系统的可调度性分析3.3多处理器系统的可调
  • 2024-02-01Kubernetes:kube-scheduler 源码分析
    0.前言[译]kubernetes:kube-scheduler调度器代码结构概述介绍了kube-scheduler的代码结构。本文围绕代码结构,从源码角度出发,分析kube-scheduler的调度逻辑。1.启动kube-schedulerkube-scheduler使用Cobra框架初始化参数,配置和应用。//kubernetes/cmd/kube-sche
  • 2023-12-23xv6 磁盘中断流程和启动时调度流程
    本文讲述xv6中的一些细节流程,还有对之前文中遗留的问题做一些补充说明,主要有以下几个问题:一次完整的磁盘中断流程进入调度器后的详细流程sched函数中的条件判断scheduler函数中为什么要周期性关中断一次完整的磁盘流程此节讲述完整的磁盘读写流程,读写的流程总体差不多,这里以读
  • 2023-12-22thread基本常识内容汇总
    1.pthread_setschedparamman手册-来自Ubuntu20.04PTHREAD_SETSCHEDPARAM(3)LinuxProgrammer'sManual
  • 2023-12-11实时组调度 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/scheduler/sched-rt-group.html实时组调度0.警告调整这些设置可能导致系统不稳定,这些旋钮只有root用户才能操作,并且假设root用户知道自己在做什么。最值得注意的是:在sched_rt_period_us中使用非常小的值可能导致系统不稳定,
  • 2023-12-11CFS调度器 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/scheduler/sched-design-CFS.htmlCFS调度器1.概述CFS代表“完全公平调度器”,是由IngoMolnar实现并合并到Linux2.6.23中的新“桌面”进程调度器。它是替代先前普通调度器SCHED_OTHER交互代码的调度器。CFS设计的80%可以用一句话概括
  • 2023-12-11调度器域 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/scheduler/sched-domains.html调度器域每个CPU都有一个“基本”调度域(structsched_domain)。域层次结构是通过这些基本域通过->parent指针构建的。->parent必须以NULL结尾,并且域结构应该是每个CPU的,因为它们是无锁更新的。每
  • 2023-12-07Linux-线程优先级学习
    概念Linux系统中常用的几种调度类为SCHED_NORMAL、SCHED_FIFO、SCHED_RR。SCHED_NORMAL:用于普通线程的调度类SCHED_FIFO和SCHED_RR是用于实时线程的调度类,优先级高于SCHED_NORMAL。内核中区分普通线程与实时线程是根据线程的优先级,实时线程拥有实时优先级(real-timepriority
  • 2023-12-06使用funcgraph-retval和bpftrace/kprobe快速定位并解决cpu控制器无法使能的问题
    版本Linux6.5背景在学习cgroupv2的时候,想给子cgroup开启cpu控制器结果失败了:#查看可以开启哪些控制器root@ubuntu-vm:/sys/fs/cgroup#catcgroup.controllerscpusetcpuiomemoryhugetlbpidsrdmamisc#上面看到,是支持cpu控制器的,通过下面命令查看目前子cgroup开启
  • 2023-11-09CFS(四)新任务的创建流程
    前言新任务产生接口有clone、fork等系统调用,这些系统调用的都是通过do_fork函数实现。本文主要对do_fork中CFS新任务的调度初始化过程进行了探究,看看一个CFS新任务如何完成调度信息的初始化以及进入就绪队列的。CFS的调度信息初始化long_do_fork(...){ /*任务信息初始化*/
  • 2023-11-06Perf in Linux
    PerfCommands:perfroot@f5c6cb9f45b1:/#perfusage:perf[--version][--help][OPTIONS]COMMAND[ARGS]Themostcommonlyusedperfcommandsare:annotateReadperf.data(createdbyperfrecord)anddisplayannotatedcodearchive
  • 2023-11-02一次任务状态"失常"的踩坑记
    0背景  业务场景中需要统计任务处于"D"状态offcpu的时长,为此和队友一起尝试使用ebpf在trace_sched_switch()这个trace点挂上自己的ebpf处理函数。这个ebpf处理函数使用SEC("tp/sched/sched_switch")来声明,然后在处理函数中判断"prev_state"是否带有"TASK_UNINTERRUPTIBLE"标