云谷计算

高调做事,低调做人...

Linux常见内核进程说明 - kswapd和kcompactd

kswapd kswapd内核进程在每个numa节点上运行一个。下面是一个2P服务器上kswap的分布情况,kswapd0和kswapd1分别运行在cpu38和cpu27上,他们在两个不同的numa节点上。 # ps -eF|grep kswap root 315 2 0 0 0 38 Apr22 ? 00:00:55 [ks...

Linux常见内核进程说明 - khugepaged

内存大页的好处 现代CPU中就出现了TLB(Translation Lookaside Buffer) Cache用于缓存少量热点内存地址的mapping关系。然而由于制造成本和工艺的限制,响应时间需要控制在CPU Cycle级别的Cache容量只能存储几十个对象。那么TLB Cache在应对大量热点数据Virual Address转换的时候就显得捉襟见肘了。我们来算下按照标准的Linux...

使用Superset可视化Mysql数据

背景 Superset是一款轻量级的BI工具,由Airbnb的数据部门开源。整个项目基于Python框架,集成了Flask、D3、Pandas、SqlAlchemy等。 Superset本身集成了数据查询功能,支持各类主流数据库,包括MySQL、PostgresSQL、Oracle、Impala、SparkSQL等,深度支持Druid。 安装 最新的superset已经不支持py...

Intel Core & Uncore架构简介

背景 uncore一词,是英特尔用来描述微处理器中,功能上为非处理器核心(Core)所负担,但是对处理器性能的发挥和维持有必不可少的作用的组成部分。处理器核心(Core)包含的处理器组件都涉及处理器指令的运行,包括算术逻辑单元(ALU)、浮点运算单元(FPU)、一级缓存(L1 Cache)、二级缓存(L2 Cache)。Uncore的功能包括QPI控制器、三级缓存(L3 Cache)、内存...

谈谈Linux History配置的优化

Pain #1 - 不带时间戳,不知道命令是什么时候发生的 默认情况下 history 命令直接显示用户执行的命令而不会输出运行命令时的日期和时间,即使 history 命令记录了这个时间。 运行 history 命令时,它会检查一个叫做 HISTTIMEFORMAT 的环境变量,这个环境变量指明了如何格式化输出 history 命令中记录的这个时间。 若该值为 null 或者根本没有...

Linux Top中的内存参数详解

Linux内存类型 一般来说,业务进程使用的内存主要有以下几种情况: 用户空间的匿名映射页(Anonymous pages in User Mode address spaces),比如调用malloc分配的内存,以及使用MAP_ANONYMOUS的mmap;当系统内存不够时,内核可以将这部分内存交换出去; 用户空间的文件映射页(Mapped page...

Linux内存超分配Overcommit深入理解

背景 Memory Overcommit的意思是操作系统承诺给进程的内存大小超过了实际可用的内存。一个保守的操作系统不会允许memory overcommit,有多少就分配多少,再申请就没有了,这其实有些浪费内存,因为进程实际使用到的内存往往比申请的内存要少,比如某个进程malloc()了200MB内存,但实际上只用到了100MB,按照UNIX/Linux的算法,物理内存页的分配发生在使用的...

Linux使用lsof查看打开的文件和网络连接

lsof是List Open Files的缩写。顾名思义,它用来查看系统中进程打开了哪些文件;因为Linux几乎所有的设备都可以看成是文件,所以lsof经常也可以用来查看管道,sockets的使用状态。 查看当前所有的活跃连接 # lsof -i COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rpcbi...

Linux系统优化与调试之六 - CPU分支预测的性能影响

现代CPU是以流水线的方式加载并执行代码,当指令运行到if或者是switch时,这意味着清空流水线,等待新的跳转目的指令的取指执行。在这种情况下,需要将跳转指令之后但是已经执行的微指令全部取消掉,返回到执行前的状态。当所有乱序执行的微指令都退出乱序执行部件之后,将它们丢弃掉,然后从新的地址开始执行。因此,高频率的分支判断对性能的影响很大。 Bad Branch Predic...

Linux系统优化与调试之五 - Cache Miss的性能影响

现代计算机体系结构,存储有很多层次,各个层次硬件访问延迟存在数量级上的差异,越高的性能,往往意味着更高的成本和更小的容量。因为不同层级之间的性能差距一般是指数级别, 如何有效利用高性能的存储介质,对应用程序的性能影响很大。 下面两段程序的时间复杂度完全一致, 都是对一个数组执行n次置1操作,但是在我的执行环境上,前者耗时1.17s, 而后者耗时仅为0.14s。 这是因为前...