除了通常的新有线/无线网络硬件支持和大型 Linux 网络子系统中的其他例行变动之外,Linux 6.8 内核还对核心网络代码进行了一些关键改进,当遇到许多并发网络连接时,TCP 性能可以提高 ~40%。
[译]tcpdump 示例教程
原文: A tcpdump Tutorial with Examples — 50 Ways to Isolate Traffic
很好的整理,备查
tcpdump毫无无疑是首要的网络分析工具,因为它在一个工具中提供了强大的功能,而且还很简单。
本教程将向您展示如何以各种方式将流量基于IP、端口、协议、应用程序层协议分离(原文叫做isolate, 你可以理解为filter, 将网卡中的各种数据包进行筛选,只保留我们关注的数据包)出来,以确保您尽快找到所需的内容(也就是数据包的筛选)。
Linux上下文切换监控
我们在监测Linux的应用的时候,当CPU的利用率非常高,但是系统的性能却上不去的时候,不妨监控一下线程/进程的切换,看看是不是context switching导致的overhead过高。
一般我使用dstat
工具用来监控,比如dstat -y
:
|
|
或者vmstat 3
:
|
|
但是如何知道那些进程/线程做切换能,淘宝褚霸有篇文章:latencytop深度了解你的Linux系统的延迟介绍了一种方法。事实上,有一个工具pidstat
,可以用来监控上下文切换。 它是sysstat包其中的一个工具,sysstat包含好几个很棒的工具,比如sar、iostat等。
执行pidstat -w
|
|
cswch/s
是主动地上下文切换,nvcswch/s
是被动执行上下文切换的次数。
如要要显示线程的上下文切换统计,可以执行:
|
|
更多的参数可以man pidstat
获得。
在 Linux 上如何清除内存的 Cache、Buffer 和交换空间
英文原文: How to Clear RAM Memory Cache, Buffer and Swap Space on Linux,
中文翻译: 在 Linux 上如何清除内存的 Cache、Buffer 和交换空间 by strugglingyouth
像任何其他的操作系统一样,GNU/Linux 已经实现的内存管理不仅有效,而且更好。但是,如果有任何进程正在蚕食你的内存,而你想要清除它的话,Linux 提供了一个刷新或清除RAM缓存方法。
Virtualbox mount共享文件夹错误
最近创建了一个Centos 7的虚拟机,使用的是virtualbox 版本 5.0.6 r103037。
安装了增强包之后,依然无法挂载共享文件夹,报错如下:
|
|
用redhat 6.4是正常的。
stackoverflow有人也遇到了这个问题,解决办法如下:
|
|
特别记录下来以备将来查询。
你也可以在/etc/modules-load.d/
创建要加载的模块,一个文件加载一个模块,如:
|
|
这样启动的时候就将相应的模块加载进来了。
Linux Signal及Golang中的信号处理
信号(Signal)是Linux, 类Unix和其它POSIX兼容的操作系统中用来进程间通讯的一种方式。一个信号就是一个异步的通知,发送给某个进程,或者同进程的某个线程,告诉它们某个事件发生了。
当信号发送到某个进程中时,操作系统会中断该进程的正常流程,并进入相应的信号处理函数执行操作,完成后再回到中断的地方继续执行。
如果目标进程先前注册了某个信号的处理程序(signal handler),则此处理程序会被调用,否则缺省的处理程序被调用。
使用cgroups限制MongoDB的内存使用
cgroups,其名称源自控制组群(control groups)的简写,是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输出等)。
这个项目最早是由Google的工程师在2006年发起(主要是Paul Menage和Rohit Seth),最早的名称为进程容器(process containers)。在2007年时,因为在Linux内核中,容器(container)这个名词有许多不同的意义,为避免混乱,被重命名为cgroup,并且被合并到2.6.24版的内核中去。自那以后,又添加了很多功能。
使用 cgroup,系统管理员可更具体地控制对系统资源的分配、优先顺序、拒绝、管理和监控。可更好地根据任务和用户分配硬件资源,提高总体效率。
在实践中,系统管理员一般会利用cgroup做下面这些事:
- 隔离一个进程组(比如:nginx的所有进程),并限制他们所消费的资源,比如绑定CPU的核。
- 为这组进程 分配其足够使用的内存
- 为这组进程分配相应的网络带宽和磁盘存储限制
- 限制访问某些设备(通过设置设备的白名单)
kernel 101 - 动手写内核
Arjun Sreedharan写的内核编写教程。 超级简单。
目前写了两篇:
Kernel 101 – Let’s write a Kernel
Kernel 201 - Let’s write a Kernel with keyboard and screen support
国内也有人翻译了,如
以下是我根据上面的文章整理的翻译。