[译]tcpdump 示例教程

原文: A tcpdump Tutorial with Examples — 50 Ways to Isolate Traffic

很好的整理,备查

tcpdump毫无无疑是首要的网络分析工具,因为它在一个工具中提供了强大的功能,而且还很简单。

本教程将向您展示如何以各种方式将流量基于IP、端口、协议、应用程序层协议分离(原文叫做isolate, 你可以理解为filter, 将网卡中的各种数据包进行筛选,只保留我们关注的数据包)出来,以确保您尽快找到所需的内容(也就是数据包的筛选)。

阅读全文

Linux上下文切换监控

我们在监测Linux的应用的时候,当CPU的利用率非常高,但是系统的性能却上不去的时候,不妨监控一下线程/进程的切换,看看是不是context switching导致的overhead过高。

一般我使用dstat工具用来监控,比如dstat -y:

1
2
3
4
5
---system--
int csw
367 561
274 439
279 363

或者vmstat 3:

1
2
3
4
5
[root@abc smallnest]# vmstat 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 3126192 31692 1521612 0 0 176 325 166 258 1 1 96 3 0

但是如何知道那些进程/线程做切换能,淘宝褚霸有篇文章:latencytop深度了解你的Linux系统的延迟介绍了一种方法。事实上,有一个工具pidstat,可以用来监控上下文切换。 它是sysstat包其中的一个工具,sysstat包含好几个很棒的工具,比如sar、iostat等。

执行pidstat -w

1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@abc smallnest]# pidstat -w
Linux 2.6.32-358.el6.x86_64 (abc) 04/11/2016 _x86_64_ (2 CPU)

11:25:00 PM PID cswch/s nvcswch/s Command
11:25:00 PM 1 0.60 0.03 init
11:25:00 PM 2 0.04 0.00 kthreadd
11:25:00 PM 3 0.36 0.00 migration/0
11:25:00 PM 4 0.58 0.00 ksoftirqd/0
11:25:00 PM 5 0.01 0.00 migration/0
11:25:00 PM 6 0.08 0.00 watchdog/0
11:25:00 PM 7 0.39 0.00 migration/1
11:25:00 PM 8 0.01 0.00 migration/1
11:25:00 PM 9 0.52 0.00 ksoftirqd/1
……

cswch/s是主动地上下文切换,nvcswch/s是被动执行上下文切换的次数。

如要要显示线程的上下文切换统计,可以执行``:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@abc smallnest]# pidstat -wt
Linux 2.6.32-358.el6.x86_64 (abc) 04/11/2016 _x86_64_ (2 CPU)

11:27:57 PM TGID TID cswch/s nvcswch/s Command
11:27:57 PM 1 - 0.56 0.03 init
11:27:57 PM - 1 0.56 0.03 |__init
11:27:57 PM 2 - 0.03 0.00 kthreadd
11:27:57 PM - 2 0.03 0.00 |__kthreadd
11:27:57 PM 3 - 0.34 0.00 migration/0
11:27:57 PM - 3 0.34 0.00 |__migration/0
11:27:57 PM 4 - 0.57 0.00 ksoftirqd/0
11:27:57 PM - 4 0.57 0.00 |__ksoftirqd/0
11:27:57 PM 5 - 0.01 0.00 migration/0
……

更多的参数可以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缓存方法。

阅读全文

Linux Signal及Golang中的信号处理

信号(Signal)是Linux, 类Unix和其它POSIX兼容的操作系统中用来进程间通讯的一种方式。一个信号就是一个异步的通知,发送给某个进程,或者同进程的某个线程,告诉它们某个事件发生了。
当信号发送到某个进程中时,操作系统会中断该进程的正常流程,并进入相应的信号处理函数执行操作,完成后再回到中断的地方继续执行。
如果目标进程先前注册了某个信号的处理程序(signal handler),则此处理程序会被调用,否则缺省的处理程序被调用。

阅读全文

Linux Performance Analysis and Tools

Brendan Gregg曾是SUN公司(现已被Oracle收购)的kernal和性能工程师。2010年10月离开Oracle加入Joyent, 2014年成为Netflix公司的高级性能架构师。 Dtrace项目的专家之一, DTraceToolkit的创建者。 现在经常在他的博客上发表一些关于Linux性能的文章。
他专门开了一个页面介绍Linux 性能监控工具, 下图就是他的一副描述Linux监控工具的巨图:
Linux observability tools

阅读全文