• 2024-11-17Golang的GMP调度模型与源码解析
    0、引言我们知道,这当代操作系统中,多线程和多进程模型被广泛的使用以提高系统的并发效率。随着互联网不断的发展,面对如今的高并发场景,为每个任务都创建一个线程是不现实的,使用线程则需要系统不断的在用户态和内核态之间不断的切换,引起不必要的损耗,于是引入了协程。协程存在于用户
  • 2024-11-13CFS任务的负载均衡(概述)
    CFS任务的负载均衡(概述)我们描述负载均衡的系列文章一共三篇,第一篇是框架部分,即本文,主要描述了负载均衡相关的原理、场景和框架。后面的两篇是对均衡代码的情景分析,通过对tickbalance、newidlebalance和taskplacement等几个典型的负载均衡来呈现其实现细节,稍后发布,敬请期待。
  • 2024-11-12内核tracepoint的注册回调及添加的方法
    一、背景内核开发时往往需要做一些内核态函数的监测或者内核状态的监测,就需要用一些调试手段来观测。常用的内核态的观测如kprobe和tracepoint,但是kprobe往往受制于一些系统的限制,很多系统并没有打开kprobe选项,这样我们不能通过kprobe来探测。但是tracepoint一般都是打开的,毕
  • 2024-11-04调度时间片“过长”的原因及调度时间片的观测
    一、背景之前的博客讲解了调度时延的观测调度时延的观测-CSDN博客,当前这篇博客会讲解调度里的另外一个常用可观测点,调度时间片。调度时间片相比调度时延更加好理解,表示的是某个任务被系统切换进来执行到被系统切换出去这个时间。从切换出去的目的来说分为两种情况,一种是任务
  • 2024-10-26[asm]: linux syscall number(32bits_64bits)
    [asm]:linuxsyscallnumber(32bits_64bits)    一、32bit_syscall_number(451个系统调用)1[root@rocky:tmp]#catlinux_syscall_no_32.txt2//date:2024-10-263//usingFor:4//--AssemblyLanguage(nasm,gas)5//--syscall
  • 2024-10-07深入理解Linux进程调度(下)
    一、SMP管理在继续讲解之前,我们先来说一下多CPU管理(这里的CPU是指逻辑CPU,在很多语境中CPU都是默认指的逻辑CPU,物理CPU要特别强调是物理CPU)。最开始的时候计算机都是单CPU的,叫做UP(Uni-Processor),操作系统也只支持UP。后来计算机慢慢发展成了多CPU(包括多物理CPU和多核技术),于是
  • 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%可以用一句话概括