PMU Event counter的使用状况检测

题目用中文反而有点绕,How to detect whether PMU event counters are occupied?

就是在前几天全民在家办公的时候,有个来自A公司的“大客户”发邮件咨询了类似的问题。事发他们正在开发一套基于PMU (performance monitoring unit)event counter的工具用于监控物理主机的硬件资源使用情况。但他们在开发过程中发现有些客户的某些应用同样也会使用到Event counter,导致Event counter的使用出现冲突,数据不可用。于是自然就需要一种event counter是否正在使用的机制。

继续阅读“PMU Event counter的使用状况检测”

关于MACD算法的一点思考

单纯说MACD,可能对于IT人士来说有点陌生。其实MACD就是股票软件中常见的“快慢线”。它的算法是取两个一大一小的时间窗口,对于股市来说往往采用5个交易日(周线)和21个交易日(月线)。对比两个时间窗口内的EMA(指数加权平均的)变化的不同,从而预测当前的股票状况。如果用公式来说:
\text{EMA}_{t1} = \text{EMA}_{t0} + \alpha \times (p - \text{EMA}_{t0})

继续阅读“关于MACD算法的一点思考”

从著名的Q_rsqrt说起

凡是做过一段时间开发的人大多都知道算法优化的必要性。兴许是近期某社区的火爆,导致了很多人都会把卡马克在开发quark3时做的那段可谓是天神级别的“Q_rsqrt”作为一个经典的算法优化教程来说。然后就是某位仁兄就用了这段代码替换掉了原本math.h调用中的sqrtf函数,堂而皇之的提交进了代码库。

继续阅读“从著名的Q_rsqrt说起”

从Python的数据结构说起

正值毕业季,这些天一直忙于面试各个踏出校门的大学生。惯例性的,我会出一些看似很简单,但其实很刁钻的题目,主要是看看面试者的知识是否可以用“扎实”来形容。

对于Python来说,我习惯性的一个问题是“Python常用的dict, list, set数据结构有什么区别?”然后就是设定一个场景看看更适合什么结构实现之类的问题。谈不上是难题,但回答的结果有些大失所望。

继续阅读“从Python的数据结构说起”

Python的egg包

尽管现在有了wheel这类更为“先进”的包装方式,但无可否认的是egg包+easy_install方式是最为热门的Python扩展包安装方式。何况python的意思是“蝰蛇”,蛇的繁殖方式当然应该是蛋(egg)咯!这些天恰巧我正在制作一系列的Python扩展,这里就简单说说如何制作一个自己的egg包。

继续阅读“Python的egg包”

七零八碎的JRE

作为开源软件的一个重要组成部分的Java应用,其实Litrin一直很少在本站提及。作为大部分Java应用来说,似乎从底子上就不具备其他开源软件的精神——低耦合、少依赖、短小精悍。还有一方面是尽管项目代码是开源了,但大多数的JRE(Java run time environment) 的核心技术还是锁在几家大头的保险柜里。直到有了OpenJDK……

继续阅读“七零八碎的JRE”

程序中多任务处理系统

有感于网络上各个文档之间的翻译不同,甚至很文档本身就有混淆各个名词的嫌疑,故本站这次写点理论化的东西,仔细讲讲进程、线程以及更热门的xx程的联系和区别。

先从硬件底层说起。作为一个物理上的CPU核心,大多现在都是多核的天下了,这里只讲1个核心。在一个时钟周期内只能执行一个操作,实现并发、多任务什么的都必须通过x程的假象,不同的任务将轮流独占CPU,这个过程都是由操作系统或者软件层面实现的而且基于用户的感知时间来说,这个切换的过程是很难被感知的。当然,如果同一时间有太多的任务,每次轮转任务就会间隔更多时间。“卡顿”的感觉就是你对这个时间片切换过程的感知。

继续阅读“程序中多任务处理系统”