Victor's Blog
平时在Linux平台进行开发工作时,不可避免的会遇到一些程序上的问题。Linux提供了不少方便的调试工具,可以用来快速定位程序中的问题,提高开发效率。
本文列举了几个常用的调试工具。
Read More
在实际工作中,时常会遇到换机器或者单纯由于软件对内核版本的要求,需要升级服务器的系统。笔者工作中最常用的Linux发行版是CentOS,所以有时会遇到需要自己升级系统的情况。网上搜到的升级方式比较杂,笔者在这里简单总结一下,可以作为参考。实际操作过程基本是一致的,中间有些涉及到内核中的文件,可能需要对应到自己实际的机器。
平时的工作学习中,尤其是开发调试的时候,经常会用到抓包工具。Linux下一般都是使用tcpdump(Windows下的开发接触较少,Windump也用过,没有深入研究过),最近调试DPDK程序时,也开始接触dpdk-pdump(DPDK程序的抓包工具,16.07版本开始支持),有时两个工具的抓包结果有出入,所以想调研一下两个工具的区别。上一篇博客中已经简单介绍了pdump工具,本文主要介绍和tcpdump紧密相关的PF_PACKET和SOCK_RAW。
自从加入中心的网络组,一直在参与用户态协议栈的相关工作。目前接触的用户态一般都使用Intel的DPDK包转发框架,实现kernel-bypass。网卡被DPDK接管后,内核的ifconfig,tcpdump等工具将不再适用(由mTCP中修改后的DPDK绑定的网卡,是可以通过ifconfig命令看到的),所以开发调试中,抓包就成了问题。一般对端没有使用DPDK的话,会选择在对端使用tcpdump抓包或者经过交换机,在交换机抓包。但是,如果想在DPDK的出入口抓包,或者收发两端都使用DPDK,使用Linux提供的工具直接抓包就很难实现。本文主要介绍DPDK的抓包工具pdump。
Linux下C语言开发,经常需要获取系统时间或做延时操作。Linux提供了一些应用层库函数,基本可以满足开发中的不同需求。现在简单整理一下Linux下的时间函数。
主要分为两类:时间获取函数 和 延时函数。
函数原型:
鉴于目前的研究方向是计算机系统结构,具体是DCN(数据中心网络),平时的学习工作主要是在Linux下进行开发,使用最多的则是C语言。本科阶段的学习中,涉及的C语言比较浅显,而内核C中有许多很有意思的特性。
一直以来,网络协议栈都和内核密切相关,内核作为操作系统的控制者,也是负责网络资源分配的最佳人选。随着Linux系统的不断壮大,内核协议栈的功能性能和稳定性都得到了高度认可。
现在互联网业务蒸蒸日上,本该是性能瓶颈的网络传输,被聪明的开发者们通过集群、分布式等方式不断优化,将网络业务的力量不断提高。但随之而来,Linux内核作为一个调度者,不适宜对外提供业务服务,也不适合占用系统资源,无论多么巧妙的开发技巧,都存在面对单点性能瓶颈的问题。
Hexo(中文官方网站)是一个快速、简洁且高效的博客框架,让上百个页面在几秒内瞬间完成渲染。类似于jekyll、Octopress、WordPress,我们可以用hexo创建自己的博客,托管到GitHub上,绑定自己的域名,用MarkDown写文章。Hexo支持Github Flavored Markdown的所有功能, 甚至可以整合Octopress的大多数插件。并自己也拥有强大的插件系统,安装插件可以让 Hexo 支持 Jade, CoffeeScript。