那些可进入睡眠状态的Linux内核函数

在linux内核开发中断处理函数不能调用可能导致睡眠的函数,下面总结linux内核可能引起睡眠的函数如下: schedule函数 schedule_timeout schedule_timeout_uninterruptible schedule_timeout_interruptible cond_resched might_resched sleep函数 msleep msleep_interruputible ssleep osal_usleep might_sleep 取信号量函数 down down_timeout down_read down_write down_interruptible wait_for_completion wait_for_completion_interruptible wait_for_completion_timeout wait_for_completion_interruptible_timeout kmalloc相关函数含有标志GFP_KERNEL kmalloc kzalloc krealloc kmem_cache_create kmem_cache_alloc kmem_cache_zalloc 取睡眠锁函数 mutex_lock mutex_lock_timeout mutex_lock_nested mutex_lock_interruptible mutex_lock_interruptible_nested 在中断处理函数不能使用睡眠函数原因 主要原因如下: ...

May 27, 2015

C语言代码 review的总结

代码review是保证代码质量在项目开发及代码修改中一项重要的环节,下面就代码reiew的一些总结,总结一些代码的review的关注点,提高代码review的效率与效果,提前发现问题,降低后期的测试成本,以及避免软件上线或交付出问题导致的经济损失和恶劣影响(ps:对每一行代码保持敬畏之心)。 ...

May 24, 2015

Linux性能优化杂谈

性能不仅仅是一串串数字,性能体现更大的吞吐量及更低的延迟;如果网络延迟增加0.1秒,google每秒损失100W,不是人民币是美元;网页响应慢0.1秒,运营成本每天增加100万美金。亚马逊的数据也显示,网页延迟1秒可能导致全年损失16亿美金;移动页面加载时间时长超过5秒,74%的用户会选择离开,高性能主要体现下面三个方面: ...

May 24, 2015

一个linux网络丢包问题分析

丢包问题是十分常见一类问题,下面总结的一个网络丢包问题的分析过程。 问题描述 组网: TC-PORT1——-VSR-eth1 TC-PORT2——-VSR-eth2 打流: 报文从TC-Port1打入VSR-eth1,再从VSR-eth2出,到TC-Port2,打流的时候变换了源ip与源端口 ...

May 24, 2015

在没有分支miss条件下,实现取最小值

在实际性能优化过程,加了一个if判断整个系统转发性能就有大约5%的下降,下面简单分享一种在没有分支miss条件下,实现取最小值的方法。 一般实现 取两个数最小值,一般代码常见两种写法如下: ...

May 24, 2015