自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序猿Ricky的日常干货

学而不思则罔,思而不学则殆! (xiehaocheng127@163.com)

  • 博客(10)
  • 资源 (4)
  • 收藏
  • 关注

原创 CPU负载均衡

如何实现负载均衡为了系统负载的均衡,主要通过如下三种手段:(1)当一个进程要加入runqueue时,选择负载最轻的cpu上的runqueue(2)当前CPU的runqueue为空时,主动拉取其他runqueue上的进程来运行(3)周期计算各个CPU上的负载情况,在必要的时候迁移进程具体的场景,CFS调度器负载均衡发生在如下的一些路径上:1.当前进程离开runqueue,进入睡眠,而对应...

2019-02-28 19:37:36 4889

原创 内核调度时机

调度的时机内核中常见的调度场景如下:(1)进程被阻塞时,比如执行sleep()后,需要立刻执行schedule()进行调度(2)当唤醒进程时,比如try_to_wake_up()执行时,会重新计算负载,查找需要执行的进程,并设置TIF_NEED_RESCHED标志延时调度(3)当周期执行的scheduler_tick()发现需要切换进程时,设置TIF_NEED_RESCHED标志延时调度...

2019-02-19 10:19:19 727

原创 进程创建过程

进程创建在进程创建时,调用do_fork函数来创建新进程,那么和调度相关的操作主要有两个,一个是sched_fork,这是对一个进程进行调度的初始化,另外一个就是wake_up_new_task,这个是把刚刚创建的子进程唤醒加入到调度器中管理。首先来看sched_fork函数,调用流为do_fork–>copy_process–>sched_fork。 /* * fork()...

2019-02-25 16:07:26 4945

原创 scheduler_tick函数详解

scheduler_tick是调度器中的一个核心重要的函数,它叫做周期调度器,驱动调度器运行的机制之一。event_handler()-->tick_handle_periodic()->tik_periodic()->update_process_times()-->scheduler_tick()以上是该函数的调用回溯,由时钟中断驱动着这个函数的运行,每个CPU ...

2019-02-24 17:09:01 5809

原创 CFS调度器(二)

组调度前面介绍到的CFS调度器都是以进程为单位进行的调度,实际应用场景中,用户可能会希望系统调度是基于用户组进行的。比如一个服务器上有两个用户同时使用,如果想要两个用户拥有相同的资源分配,那么就可以采用组调度方式。如果依然以进程为单位,那么假如一个用户拥有1个进程,而另一个用户拥有10个进程,这就导致了其中一个用户占用了大部分的CPU资源。调度器都是基于调度实体sched_entity来作为调...

2019-02-24 15:08:41 350

原创 CFS调度器(一)

关于调度类和优先级的概念,前面的文章《调度器概述》中已经做了介绍了,本文不在重述。本文主要关注的就是CFS调度器,或者叫做fair_sched_class调度类。这种调度器是被SCHED_NORMAL、SCHED_BATCH这两种调度策略使用的。(本文基于Linux4.0)提到调度器涉及到两个问题:1.怎么根据参量快速选出下一个要调度执行的进程?2.怎么定义和更新不同进程的相关参量?带着...

2019-02-22 18:09:09 1323

原创 PELT负载计算

PELT负载计算 (Per-Entity Load Tracking)简介什么是负载,负载实际上表示的是进程运行对系统的“压力”情况,它和进程消耗CPU时间是两个概念,比如:10个进程在运行队列runqueue中,和1个进程在runqueue中,虽然在runquque中的进程并没有正在消耗CPU时间,实际上这两种情况下,系统的压力是不同的,此时这些进程并没有在消耗CPU时间,而是在等待,但是...

2019-02-21 20:33:59 2212

原创 schedule()函数详解

asmlinkage __visible void __sched schedule(void) { struct task_struct *tsk = current; sched_submit_work(tsk); do { __schedule(); } while (need_resched()); }schedul...

2019-02-20 16:58:20 21129

原创 调度器概述

调度类现代版本的内核中,比如笔者使用的Linux 4.0,已经去除了O(N)和O(1)调度器的实现。默认实现了另外更新的4种调度器:deadline,realtime,idle和CFS。内核使用struct sched_class来描述一个调度类,也就是一个调度器。这几个调度类在内核中的定义如下:rt_sched_class --------- realtime调度器fair_sched_...

2019-02-20 11:18:31 535

原创 Linux2.6 O(1)调度器

O(1)调度器存在于2.4-2.6版本的内核中。普通进程和实时进程Linux中把进程分为普通进程和实时进程两种,实时进程对于系统的响应时间要求很高,因此实时进程的优先级都是要高于普通进程的。静态和动态优先级静态和动态优先级的范围都是[100~139],这两个值对于普通进程来说非常重要。静态优先级(值越小)越高,基本时间片越长,静态优先级越低(值越大),基本时间片越短。这是有一个固定公式进...

2019-02-15 15:56:12 801

linux gtk hello test

gtk hello world,test for gtk lib

2016-01-14

linux v4l2 camera config

linux v4l2 camera config

2016-01-14

v4l2 camera capture and config

linux系统下的camera capture和camera config实例

2015-08-17

linux v4l2 camera capture

v4l2接口,camera capture实例,合法合规!

2003-07-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除