Linux 常用命令简介
介绍
本文将对Linux常用的各种命令进行介绍。
alias
说明: 为了支持在shell脚本中使用alias命令对其他命令进行重命名
shopt –s expand_aliases #可以这样进行enable
ascii
说明: 得到一个完整的ASCII表,有对应的16进制和10进制的值
# man ascii
ausyscall
说明: 查看系统调用名和调用号的映射
# ausyscall --dump
本文将对Linux常用的各种命令进行介绍。
说明: 为了支持在shell脚本中使用alias命令对其他命令进行重命名
shopt –s expand_aliases #可以这样进行enable
说明: 得到一个完整的ASCII表,有对应的16进制和10进制的值
# man ascii
说明: 查看系统调用名和调用号的映射
# ausyscall --dump
CPU负责程序指令的执行,内存负责数据的存储,但CPU的执行速度远大于内存的访问速度, 为了缓和两者之间的速度差异,于是CPU Cache就应运而生了。
CPU Cache由硬件实现,速度介于寄存器和内存之间,系统会把经常使用的数据放到Cache中, 当对相同数据进行多次操作时,就可以避免从内存中获取数据,而直接从CPU Cache中获取数据,这样就会提高程序性能。
CPU Cache 在高级语言(C,C++,Java等)程序员的角度来看,它是透明的,无法直接干预它, 也无法察觉它是如何运行的,因为它是完全依赖硬件设施来实现的。但是,我们可以利用它, 在并发编程中善于运用CPU Cache,会给程序性能带来“质”的提升。
本文主要通过3个知识点入口,每个知识点将结合一个程序来说明CPU Cache的工作原理及相关技术。
然后,通过3种不同体系结构的内存访问实现原理,来对比它们在性能、扩展以及应用方面的优缺点。
在详细介绍不同体系架构的内存访问方式之前,先对CPU的相关概念、各种总线技术以及内存带宽等概念进行介绍。
Linux操作系统中的内存管理分为两个部分:
物理内存的管理:该部分由Linux内核的buddy系统和slab分配器合作管理, 管理着物理内存资源的分配及回收。
虚拟内存的管理:该部分由Glibc进行管理,给用户层提供了多个关于内存管理方面的函数, 其中malloc()和free()最为常用。
本文主要讨论Glibc对虚拟内存的管理,分为如下几个部分:
首先,通过对Glibc的内存管理机制进行研究,认识到某些情况下不适合用Glibc来管理内存, 因为其设计的管理机制在某些情况下可能导致内存泄露、大量的内存碎片、内存暴增等问题。
然后,通过一些案例来说Glibc管理机制的特性以及如何运用适当的方法来规避Glibc在某些 情况下对内存管理的缺陷。
###关于debuginfo的疑惑
程序员应该都知道,为了能够使用gdb跟踪程序,需要在编译期使用gcc的-g选项。 而对于系统库或是Linux内核,使用gdb调试或使用systemtap探测时,还需要安装相应的debuginfo包。
irqbalance 服务用于自动优化硬件中断分配。它通过对定期采集(每隔10秒采集一次) 的系统数据(CPU softirq和irq负载)进行分析,根据分析的结果来修改文件(/proc/irq/N/smp_affinity) 的值(即改变中断号的亲属性),从而达到优化硬件中断分配的目的。
irqbalance分为两种模式:Performance mode(默认模式)和 Power-save mode。 1) Performance mode时,irqbalance会将中断尽可能均匀地分配给每个CPU,从而充分利用CPU多核特性来提升性能。 2) Power-save mode时,irqbalance会将中断集中分配给某个CPU,从而保证其它空闲 CPU的睡眠时间,降低系统能耗。