linux死锁检测工具lockdep

在Linux系统里,假设有两处代码(比如不同线程的两个函数F1和F2)都要获取两个锁(分别为L1和L2),如果F1持有L1后再去获取L2,而此时恰好由F2持有L2且它也正在尝试获取L1,那么此时就是处于死锁的状态,这是一个最简单的死锁例子,也即所谓的AB-BA死锁。 死锁导致的最终结果无需多说,关于如何避免死锁在教科书上也有提到,最简单直观的做法就是按顺序上锁,以破坏死锁的环形等待条件。但对于拥有... 继续阅读

SSD性能测试第一神器:FIO

对于SSD性能测试来说,最好的工具莫过于FIO了。 上面这个可爱的小伙子名字叫Jens Axboe,他是丹麦哥本哈根大学计算机系没毕业的学生,他还有一个有名的同乡叫Linus,没想到老乡后来也成了他的领导。Jens今年(2017年)40岁,16岁开始就接触Linux,后来也成了Linux开发者,现在是Linux Kernel大拿了,负责块设备层的维护。这个块设备层就是跟我们SSD关系最紧密的层级,... 继续阅读

CPU到底在忙啥?CPU利用率的正确计算方法

我们平时使用的CPU利用率方法是极具误导性的,并且一年更甚一年。那么什么是CPU利用率?是你的CPU到底有多忙,是像“% CPU”这样到处在用的指标所显示的那样吗? 在top命令里,你看到90%的CPU利用率是这样: 然而它真正想表达的是这个意思: Stall(这里译作“怠速”)是说这个处理器没有在跑指令,比如在等待内存I/O的时候。我上图所画的比例(“忙”与“怠速”之间)是我在真实生产环境中遇到... 继续阅读

静态PCPU变量

内核中通常会定义很多的pcpu变量,这样有几个好处: 增加数据访问的并发量 减少数据访问的时延 从定义上就可以看出pcpu变量就是每个cpu都有某个变量的副本,各自访问各自的。那在实现上是怎么做的呢?我们今天就来看一下。 如何定义 我们先来看静态pcpu变量是如何定义的。 通常我们定义一个pcpu变量使用这样的语句。 [crayon-5c69181164d9e933496887/] 这样就定义了一... 继续阅读

网闸的技术要求

安全网闸技术是模拟人工拷盘的工作模式,通过电子开关的快速切换实现两个不同网段的数据交换的物理隔离安全技术。安全网闸技术在安全技术领域源于被称之为GAP,又称为Air Gap的安全技术,它本意是指由空气形成的用于隔离的缝隙。在网络安全技术中,主要指通过专用的硬件设备在物理不连通的情况下,实现两个独立网络之间的数据安全交换和资源共享。 它由三个组件构成:A网处理机、B网处理机和GAP开关设备。我们可以... 继续阅读