首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux内核调度算法(2)–CPU时间如何分配

当然,实际的运行进程里,大部分并不是nginx这种希望独占CPU全部时间的进程,许多进程,比如vi,它在很多时间是在等待用户输入,这时vi在等待IO中断,是不占用时间的,内核面对多样化的进程,就需要技巧性的分配...CPU时间了。...虽然内核尽量多的分配时间给IO消耗型进程,但IO消耗进程常常在睡觉,给它的时间根本用不掉。很合理吧? 那么内核具体是怎么实现这种偏心呢?...这个时间执行完后,就会根据它的初始优先级来重新分配时间,优先级为+19时最低,只分配最小时间5ms,优先级为0时是100ms,优先级是-20时是最大时间800ms。...sleep_avg就是关键了,它表示进程睡眠和运行的时间,当进程由休眠转到运行时,sleep_avg会加上这次休眠用的时间。在运行时,每运行一个时钟节拍sleep_avg就递减直到0为止。

6.9K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    深入分析Linux内核源代码阅读笔记 第四章、第五章

    定义“时间基准”的目的是为了简化计算,这样计算机中的时间只要表示为从这个时间基准开始的时钟滴答数就可以了。 Linux时间基准是 1970 年 1 月 1 日凌晨 0 点。...Linux时间系统: Linux 中用全局变量 jiffies 表示系统自启动以来的时钟滴答数目。...( ) setup_irq( ) 系统调用返回函数 ret_from_sys_call( ) 从总体上浏览一下时钟中断: 每个时钟滴答时钟中断得到执行 时钟中断的主要工作是处理和时间有关的所有信息...、决定是否执行调度程序以及处理下半部分 和时间有关的所有信息包括系统时间、进程的时间、延时、使用 CPU 的时间、各种定时器 进程更新后的时间为进程调度提供依据,然后在时钟中断返回时决定是否要执行调度程序...(current->counter=0),由于进程的时间是由时钟中断来更新的,因此,这种情况和时机 4 是一样的。

    84250

    基于Linux-3.9.4内核增加简单的时间轮转功能

    简单的时间轮转多道程序内核代码 原创作品转载请注明出处https://github.com/mengning/linuxkernel/ 作者:sa18225465 ---- 一、安装 Linux-3.9.4...qemu -kernel arch/x86/boot/bzImage 二、添加时间轮转多道批处理功能 进入 mykernel 文件夹,可以看到 qemu 窗口输出的内容的代码 mymain.c 和...mymain.c 中的代码如下: myinterrupt.c 中的代码如下: 从添加时间轮转多道程序的代码中下载 mymain.c、myinterrupt.c、mypcb.h 三个文件...= 1,当时间达到1000的整数倍时,将当前运行进程中断并打印。...通过修改一个简单的内核源码,增加一个时间轮转功能,让我们更具体的体会到了操作系统底层的实现原理,对我们后续的学习会有很大的帮助。

    99330

    time:Python的时间时钟处理

    前言 time库运行访问多种类型的时钟,这些时钟用于不同的场景。本篇,将详细讲解time库的应用知识。 获取各种时钟 既然time库提供了多种类型的时钟。下面我们直接来获取这些时钟,对比其具体的用途。...,因为即使系统时间有改变,也能保证这个时钟不会逆转。...perf_counter:允许访问有最高可用分辨率的时钟,这使得短时间测量更为准确。 process_time:返回处理器时间和系统时间的组合结果。 time:返回从”纪元“开始以来的秒数。...运行之后,效果如下: 至于ns后缀,是返回纳秒时间。 获取当前时间 time.time()函数是获取”纪元“时间,是不是可以通过秒分时的换算计算出现在的日期时间呢?...而time.localtime()的作用就是格式化时间戳为本地的时间,它有一个sec参数,也就是对应的time.time()函数的秒数,将秒数转换为标准的时间。如果没有参数,返回当前时间

    25920

    【操作系统 OS】什么是Linux CFS?完全公平调度器是什么?

    Linux CSF 简介 Linux 中 CFS 的全称是 Completely Fair Scheduler,完全公平调度器,是 Linux 内核中的一种进程调度算法。...精确调度 CFS 通过使用微观调度周期(调度)来精细控制每个进程的 CPU 使用时间。每个调度周期内,进程可以运行一小段时间,这段时间称为时间。...如果发现红黑树中有虚拟运行时间更少的进程,则进行上下文切换,将 CPU 分配给该进程。 时间计算: CFS 动态计算每个进程的时间,根据系统负载和进程优先级调整。...时间越长,进程能在一次调度中运行的时间越长。 使用和配置 CFS 自动管理大多数调度任务,无需用户干预。...这种检查过程涉及以下几个关键步骤: 时钟中断:CFS 的调度决策主要由系统的时钟中断(通常是周期性发生的定时中断)驱动。每当时钟中断发生时,系统会进入调度程序,这个过程被称为“时钟滴答”。

    21011

    Linux NTP时钟同步

    所以时钟同步在大数据里被广泛应用且必不可少的一步。 二、了解时间Linux系统中,时间分为两部分:系统时间和硬件时间。默认情况下,系统时间和硬件时间会以异步的方式进行,互不干扰。...使用NTP的目的是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用。...五、NTP时间同步方案选择 NTP同步方式在linux下一般两种:使用ntpdate命令直接同步和使用NTPD服务平滑同步。有什么区别呢,简单说下,免得时间长了,概念又模糊。...假设有三台主机搭建的集群,使用ntp服务进行时钟同步,主节点作为时钟源: 设置上海时区(各节点) yum安装ntp服务,并设置为ntpd开机自启动,修改ntp配置文件,开启ntp服务(各节点) 硬件时间以系统时间为标准进行同步...先使用ntpdate命令实现时间同步,然后再开启ntpd服务进行平滑式的逐渐时间调整。 修改主节点配置文件,使NTP主服务器与自身系统时钟同步,也就是说主节点为时间服务器。

    19.6K30

    进程调度(二)——时间轮转算法

    一 定义 时间轮转算法是将所有的就绪进程按先来先服务的原则,排成一个队列,按时间轮转。时间的大小从几ms到几百ms。...当执行的时间用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间。...这样就可以保证就绪队列中的所有进程,在一给定的时间内,均能获得一时间的处理机执行时间。...method stub RR rr = new RR(); rr.Print(rr.getProcess()); System.out.println("请输入时间...new Scanner(System.in); int Timeperiod = in.nextInt(); //时间

    2K40

    Linux系统下配置NTP时间同步服务器(系统时钟同步)

    Linux系统下配置NTP时间同步服务器(系统时钟同步) Linux系统下配置NTP时间同步服务器(系统时钟同步) 1、进入客户端机器Linux系统,我们介绍两种进入Linux系统的方法,并使用shell...进行配置: 1) 在本机登录提示符下进入Linux系统。...每个Linux系统都有一个根(root)用户,root用户能够运行程序、使用文件、以任何方式改变计算机的设置; 2) 使用telnet登陆Linux。...2、 检测客户端是否存在于机器上: 1) Linux系统中必须安装了NTP的客户端,才可以和NTP-2000服务器进行校时工作; 2) Linux下的NTP客户端存在于Linux系统安装盘中; 3)...:使用date命令查看当前时间,当前时间应该与NTP服务器时间同步; 8、 本章附录:vi编辑器的使用简介。

    10K50

    64位内核第十四讲,获取系统滴答数与日期时间

    目录 一丶简介 二丶 获取系统滴答数,并进行转换. 2.1 获取滴答数与毫秒数 2.2 获取年月日 一丶简介 在ring3层中.我们会使用 ** GetTickCount** 这个函数,返回系统自启动到现在所经历的毫秒数....在驱动中也有一个对应的函数 ** KeQueryTickCount** 二丶 获取系统滴答数,并进行转换. 2.1 获取滴答数与毫秒数 上面说了有对应函数获取....la.QuadPart *= MyInc; la.QuadPart /= 10000; *msec = la.LowPart; } 获得毫秒等是远远不够的.还要获取当前系统的时间...range [0..6] == [Sunday..Saturday] } TIME_FIELDS; 想要进行获取.需要三个API函数 ** KeQuerySystemTime ** 得到当前的格林威治时间...** ExSystemTimeToLocalTime** 将格林威治事件转化为本地时间 ** RtlTimerToTimeFields ** 转化为人们可以阅读的 Time_File类型的事件.

    1.4K10

    事务,时间戳与混合逻辑时钟

    而OplogTime本身又由逻辑时钟指定,俨然一套基于逻辑时钟的严密体系。 在这个时间点,虽然Mongo的分布式事务方案还没有公布,但是代码里已经伏线千里。...目前的时钟维护方式使得因果一致性读写成为可能。 目前,mongo进行的这些深层次的改造让人感觉大材小用,基于时间戳的事务不是必须的。...4.0引入的若干时间戳及其必要性分析 4.0基于逻辑时钟做事务,其引入了如下几种重要时间戳: stableTimestamp oldestTimestamp allcommittedTimestamp...kProvided 以上层(mongos层)指定的时间戳进行读,使用场景有待探究。 逻辑时钟 下面的内容,假设大家都已经充分具备hlc(混合逻辑时钟)的相关知识。...同样的,上述的两阶段提交,在prepare阶段协商出hlc做提交时间戳的目的,不在于写,而在于让任意一个逻辑时钟都具备全局的比较基准,从而使得基于时间戳的分布式快照读成为可能! ? 孔德雨

    1.5K30

    Python Web学习笔记之CPU时间

    时间即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间,即该进程允许运行的时间,使各个程序从表面上看是同时进行的。...分时操作系统是把CPU的时间划分成长短基本相同的时间区间,即"时间",通过操作系统的管理,把这些时间依次轮流地分配给各个用户使用.如果某个作业在时间结束之前,整个任务还没有完成,那么该作业就被暂停下来...由于计算机的处理速度很快,只要时间的间隔取得适当,那么一个用户作业从用完分配给它的一个时间到获得下一个CPU时间,中间有所"停顿",但用户察觉不出来,好像整个系统全由它"独占"似的。...在Linux的内核处理过程中,每一个进程默认会有一个固定的时间来执行命令(默认为1/100秒),这段时间内进程被分配到CPU,然后独占使用。...如果使用完,同时未到时间的规定时间,那么就主动放弃CPU的占用,如果到时间尚未完成工作,那么CPU的使用权也会被收回,进程将会被中断挂起等待下一个时间

    1.3K110

    配置 Linux时钟同步

    前言 Ubuntu系统默认的时钟同步服务器是ntp.ubuntu.com,Debian则是0.debian.pool.ntp.org等, 各Linux发行版都有自己的NTP官方服务器。...身在中国,使用这些都会有高延迟,但对时钟同步这件事来说影响不大。 在某些环境下,比如公司内网、云上子网等,是与互联网隔绝的。这时要想做时钟同步,就只能自己配置了。...本文介绍如何自己配置时钟同步,不介绍如何自建NTP服务器。 安装 一般timesync是预装的。如果没有,可以使用以下命令手动安装。...systemd-timesyncd.service因为什么原因而不存在,则可通过以下命令修复: sudo dpkg-reconfigure systemd-timesyncd 查看效果 一般查看日期与时间是使用...使用timedatectl可以查看到更多时钟同步相关信息。

    2.8K10

    Linux服务器性能分析之CPU利用率

    HZ在编译内核前是可以进行配置的,因此通过下述命令就可以查看当前系统的时钟中断频率:cat /boot/config-`uname -r` | grep CONFIG_HZ tick为系统时钟每“滴答“...即,正常情况下处理器在用户模式执行用户程序,在中断或异常情况下处理器切换到特权模式执行内核程序,处理完中断或异常之后再返回用户模式继续执行用户程序,例如,用户进程A调用了内核系统调用来获取当前的时钟滴答数...,在执行用户进程A中的系统调用指令时会保存当前用户进程的IP,CS等当前状态,然后再跳转到内核空间(即内核代码区域)去执行像应的系统调用函数,获取当前的时钟滴答数。...调度方式 Linux内核的调度方式基本上采用“抢占式优先级”方式,即当进程在用户模式下运行时,不管是否自愿,在一定条件下(如时间用完或等待I/O),核心就可以暂时剥夺其运行而调度其它进程进入运行。...SCHED_RR对应“时间轮转法”,适合于每次运行需要较长时间的实时进程。一个运行进程分配一个时间(如200毫秒),当时间用完后,CPU被另外进程抢占,而该进程被送回相同优先级队列的末尾。

    3.4K20
    领券