Linux CPU core的电源管理(1)_概述

作者:wowo 发布于:2015-4-30 21:20 分类:电源管理子系统

在SMP(Symmetric Multi-Processing)流行起来之前的很长一段时间,Linux kernel的电源管理工作主要集中在外部设备上,和CPU core相关的,顶多就是CPU idle。但随着SMP的普及,一个系统中可用的CPU core越来越多,这些core的频率越来越高,处理能力越来越强,功耗也越来越大。因此,CPU core有关的电源管理,在系统设计中就成为必不可少的一环,与此有关的思考包括:

对消费者(一些专业应用除外)而言,这种暴增的处理能力,是一种极大的浪费,他们很少(或者从不)有如此高的性能需求。但商家对此却永远乐此不疲,原因无外乎:

1)硬件成本越来越低。

2)营销的噱头。

3)软件设计者的不思进取(臃肿的Android就是典型的例子),导致软件效率低下,硬件资源浪费严重。以至于优化几行代码的难度,甚至比增加几个cpu核还困难。

在这种背景下,CPU core的电源管理逻辑,就非常直接了:根据系统的负荷,关闭“多余的CPU性能”,在满足用户需求的前提下,尽可能的降低CPU的功耗。但CPU的控制粒度不可能无限小,目前主要从两个角度实现CPU core的电源管理功能:

1)在SMP系统中,动态的关闭或者打开CPU core(本文重点介绍的功能)。

2)CPU运行过程中,动态的调整CPU core的电压和频率(将在其它文章中单独分析)。

本文将以ARM64为例,介绍linux kernel CPU core相关的电源管理设计。

阅读全文>>

标签: Linux PM core cpu

评论(22) 浏览(40122)

kernel启动优化

作者:printk 发布于:2015-4-30 8:42

本文主要讨论和linux kernel启动优化相关的内容,由于老衲技术水平有限,以下梦话可能会有很多漏洞,希望各位大拿发现bug后,以强大的知识理论碾压老衲,让贫僧能在痛苦中疯狂成长。

阅读全文>>

评论(22) 浏览(19677)

蜗窝流量地域统计

作者:linuxer 发布于:2015-4-23 12:39

针对蜗窝的来自各个省份的访问统计,很有意思,大家可以随意感受一下

阅读全文>>

标签: 流量统计

评论(18) 浏览(9625)

Linux内核同步机制之(四):spin lock

作者:linuxer 发布于:2015-4-22 12:22 分类:内核同步机制


在linux kernel的实现中,经常会遇到这样的场景:共享数据被中断上下文和进程上下文访问,该如何保护呢?如果只有进程上下文的访问,那么可以考虑使用 semaphore或者mutex的锁机制,但是现在中断上下文也参和进来,那些可以导致睡眠的lock就不能使用了,这时候,可以考虑使用spin lock。本文主要介绍了linux kernel中的spin lock的原理以及代码实现。由于spin lock是architecture dependent代码,因此,我们在第四章讨论了ARM32和ARM64上的实现细节。

注:本文需要进程和中断处理的基本知识作为支撑。



阅读全文>>

标签: spin lock 自旋锁

评论(125) 浏览(122509)

spin_lock最简单用法。

作者:heziq 发布于:2015-4-17 10:13

最近在思考一个spin_lock的用法,比如在smp系统中,在一个内核控制路径的函数中有一个局部静态变量,对这个局部静态变量有判断,算术运算。那么我们是否要对这个局部静态变量使用spin_lock锁呢?

 

个人意见:需要使用,因为在smp系统中,多个内核控制路径可能同时访问该变量。所谓的共享资源,并不只是多个函数之间共享,在smp系统有可能是自己和自己共享。

 

欢迎大家拍砖。

标签: spin_lock使用

评论(4) 浏览(11446)

Linux Regulator Framework(2)_regulator driver

作者:wowo 发布于:2015-4-16 22:18 分类:电源管理子系统

本文从regulator driver的角度,描述怎样基于regulator framework编写regulator驱动。同时,以此为契机,学习、理解regulator有关的物理特性,以便能够更好的使用它们。

阅读全文>>

标签: Linux driver framework regulator

评论(24) 浏览(30017)

linux usb 摄像头测试

作者:syhdjf 发布于:2015-4-12 12:40

在调试一款linux下的usb摄像头,通过配置内核已经支持,log信息如下

[    3.888301] usb 2-1.2: new high-speed USB device number 3 using musb-hdrc
[    4.117340] usb 2-1.2: New USB device found, idVendor=058f, idProduct=5608
[    4.124577] usb 2-1.2: New USB device strings: Mfr=3, Product=1, SerialNumber=0
[    4.132276] usb 2-1.2: Product: USB 2.0 Web Camera
[    4.137322] usb 2-1.2: Manufacturer: Alcor Micro, Corp.
[    4.217896] input: USB 2.0 Web Camera as /devices/ocp.3/47400000.usb/47401c00.usb/musb-hdrc.1.auto/usb2/2-1/2-1.2/2-1.2:1.0/input/input1
root@am335x-evm:~# dmesg | grep video
[    0.252158] Linux video capture interface: v2.00
[    1.512511] usbcore: registered new interface driver uvcvideo
[    4.187567] uvcvideo: Found UVC 1.00 device USB 2.0 Web Camera (058f:5608

想要通过luvcview测试下,但是编译时总是通不过,把头文件#include <linux/videodev.h> 改成了videodev2.h还是通不过,不知道luvcview能不能在linux3.14下运行?

各位是否有什么好的测试摄像头的方法或软件?能否提供下,小弟先行谢过。

标签: luvcview linux摄像头

评论(5) 浏览(19580)

ARM CPU性能实验

作者:linuxer 发布于:2015-4-9 18:13

一般工程师的直觉是当提升了CPU的运行频率,那么性能应该是呈现线性的关系,例如如果CPU跑260MHz,当降低到130MHz后,其性能应该会降低一半。实际情况如何呢?我们来做一个实验看看。

阅读全文>>

标签: ARM性能

评论(27) 浏览(16450)

linux 串口调试方法

作者:syhdjf 发布于:2015-4-8 16:41

最近项目上用到linux下的串口,与下级模块的通信出了些问题,所以写了个小程序想要测试下串口,物理连接是PC端串口调试助手通过usb转串口 线接到板子的uart,最终的效果是,板子的uart能发不能收,发出去的数据在PC端可以接收到,PC端串口调试助手发送到板子uart的信 息,uart不能接收,read函数一直返回-1.

所以想请教下各位有没有什么好的方法测试一下linux的串口?

阅读全文>>

标签: Linux uart

评论(3) 浏览(16462)

Linux时间子系统之(十三):Tick Device layer综述

作者:linuxer 发布于:2015-3-26 18:50 分类:时间子系统

时间子系统中的tick device layer主要涉及kernel/time/tick-*相关的文件,本文的主要内容就是从high level层次(不纠缠在具体的每行代码)描述tick device layer的运作逻辑。

如 果说每个.c文件是一个模块的话,我们可以首先简单描述tick device layer的各个模块。tick-common.c描述了tick device的一些通用操作,此外,该文件还包括了周期性tick的代码。想要让系统工作在tickless mode(更准确应该是Dynamic tick模块,也就是说根据系统的当前运行状况,动态的启停周期性tick)需要两个模块的支持,分别是tick-oneshot.c和tick- sched.c。tick-oneshot.c主要是提供和tick device的one shot mode相关的操作接口函数。从字面上看,tick-sched.c是和tick的调度相关,所谓tick的调度包括两个方面,一方面是在系统正常运行过 程中,如何产生周期性的tick event,另一方面是在系统没有任务执行,进入idle状态的时候,如何停止周期性的tick,以及恢复的时候如何更新系统状态(例如:jiffies 等)。tick-broadcast.c和tick-broadcast-hrtimer.c是和tick broadcast相关,本文不会涉及这部分的内容,会有专门的文档描述它。

本文的第二章描述了关于tick device概述性的内容,随后在第三章描述了tick device layer是如何初始化的,由于tick device开始总是工作在periodic mode,因此,本章也就顺便描述了周期性tick的运作。如果硬件以及系统配置允许,系统中的tick device会切换one shot mode,从而进入tickless mode,因此第四章描述了在配置了高精度timer的情况下,dynamic tick如何运作之机理,第五章和第四章类似,只不过描述的是没有配置高精度timer的情况。

阅读全文>>

标签: Device tick tickless NO_HZ

评论(45) 浏览(28237)

Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog