易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 : linux

linux 查看 CPU,内存,网络流量和磁盘 I/O

使用vmstat命令来察看系统资源情况
在命令行方式下,如何查看CPU、内存的使用情况,网络流量和磁盘I/O?
Q: 在命令行方式下,如何查看CPU、内存的使用情况,网络流量和磁盘I/O?
A: 在命令行方式下,
1. 查看CPU使用情况的命令
""每5秒刷新一次,最右侧有CPU的占用率的数据
$ vmstat 5
""top 然后按Shift+P,按照进程处理器占用率排序
$ top
  2. 查看内存使用情况的命令
""用free命令查看内存占用情况
$ free
""top 然后按Shift+M, 按照进程内存占用率排序
$ top
  3. 查看网络流量
""可以用工具iptraf工具
$ iptraf -g
""针对某个Interface的网络流量可以通过比较两个时间网络接口的RX和TX数据来获得
$ date; ifconfig eth1
$ date; ifconfig eth1
  4. 查看磁盘i/o
""用iostat查看磁盘/dev/sdc3的磁盘i/o情况,每两秒刷新一次
$ iostat -d -x /dev/sdc3 2
""用vmstat查看io部分的信息 ......

Linux发送函数dev_queue_xmit分析

当上层准备好一个包之后,交给下面这个函数处理
int dev_queue_xmit(struct sk_buff *skb)
{
struct net_device *dev = skb->dev;
struct netdev_queue *txq;
struct Qdisc *q;
int rc = -ENOMEM;
/* GSO will handle the following emulations directly. */
if (netif_needs_gso(dev, skb))
goto gso;
//首先判断skb是否被分段,如果分了段并且网卡不支持分散读的话需要将所有段重新组合成一个段
//这里__skb_linearize其实就是__pskb_pull_tail(skb, skb->data_len),这个函数基本上等同于pskb_may_pull
//pskb_may_pull的作用就是检测skb对应的主buf中是否有足够的空间来pull出len长度,
//如果不够就重新分配skb并将frags中的数据拷贝入新分配的主buff中,而这里将参数len设置为skb->datalen,
//也就是会将所有的数据全部拷贝到主buff中,以这种方式完成skb的线性化
if (skb_shinfo(skb)->frag_list &&
!(dev->features & NETIF_F_FRAGLIST) &&
__skb_linearize(skb))
goto out_kfree_skb;
/* Fragmented skb is linearized if device does not support SG,
* or if at least one o ......

第一次在Linux下编程

第一次在Linux下编程。呵呵
在网上搜索了一下怎么样在Linux下编程。说是用Gedit写好代码,然后保存.c格式文件。然后到终端编译。
打开Gedit.老规矩,先来个Hello.c
#include <stdio.h>
main()
{
 printf("Hello~!Vimo~~\n\n");
}
保存。然后打开终端。
编译是什么命令?没办法,问下同学。阿灵告诉我:
gcc hello.c
./a.out
./ hello
然后终端里终于看到Hello输出了。
后来在网上找了一下,有另外一个命令:
gcc hello.c -o hello
./hello
额。。。心情没什么特别激动的。反正,成功了。。。 ......

Linux 内核有多少代码是来自华人的贡献?

里有一个统计 http://www.remword.com/kps_result/china.php
点击连接进去,可以看能到:
Total patch sets of this kernel release: 157236
5337 person contribute their works to this kernel release.
Averagely, every person committed 29 patch sets.
299(5.60%) Chinese people contribute 6185(3.93%) patch sets.
(NOTE: "Chinese" means who ethnically belongs to Chinese descent and many different nationalities are represented)
这段时间所有内核patch共有157236行,由5337人完成,平均每人完成29个,其中包括299名华人,占总人数的5.60%,他们贡献了所有代码量的3.93%
所有的统计基于 KPS (Kernel Patch Statistic),这里的 Chinese 指的是华人,并不限定国籍是中国人。

从这个统计可以看出绝大多数贡献来自于一些大公司,比如 Redhat、Intel、IBM、SUN、Google、Analog、MontaVista等。而更该被记住的是那些标记为 Hobbyists 也即不是供职于大公司而纯粹是出于个人兴趣爱好的贡献者。 ......

Linux TCP/IP协议栈的通用编码模式

转自:http://blog.chinaunix.net/u/26185/showart_475934.html
和其他内核功能一样,每个网络功能都是内核成员中的一个。因此,它必须合理且公平的使用内存,
CPU和其他共享资源。绝大多数功能并非内核中一段独立的程序,而是根据该功能而或多或少的与内核中其他部分相互影响。因此它们总是试图,尽可能的,使用
类似的体系结构来实现类似的功能。
对许多内核组件来说有些需求是通用的,比如为同一数据结构分配好几个实例,或者跟踪一个数据结构的参考以避免不安全的内存重分配,等等。下面我们来看linux解决这些需求的一些通用的方法。我们也会谈到在查看内核编码时可能遇到的通用的编码技巧。
1.缓存
内核使用kmalloc和kfree来分配和释放内存。这两个函数的使用方法和用户空间的函数 malloc 和free的使用方法类似.
一个内核组件通常需要分配一个数据结构的多个实例。如果分配和释放频繁发生,相关内核组件的初始化函数(比如路由子系统中的fib_hash_init函数)通常会分配一个特殊的内存缓存以加速内存分配。当一个内存块释放时,它会被返回给与分配时相同的内存缓存。
以下是一些需要内核来维护内存缓存的网络数据结构:
Socket buffer descriptors
这个缓存,由n ......

嵌入式LINUX的开发经验与教训随笔

1.系统和平台熟悉
在一个新的平台上开发或者移植一款软件的时候,首先应该充分平台或者
操作系统的各种属性,这些属性包括但不仅限于:
1)系统的任务调度,任务间的通信机制
任务调度包括是否是多任务实时操作系统,任务以何种方式存在的,如何添加和管理任务?任务间的优先级如何设置?任务间的优先级设置?任务堆栈?任务间的通信机制包括了解系统提供的通信机制,各种通信机制的优劣,通信细节等等。
案例1:
曾经在某一个平台上做一个软件,创建了多个任务,由于各个任务实现者不一样,一个漫不经心的错误造成了本该是高优先级的任务没有在优先级上体现出来,A,B,C,D4个任务,本来应当是A>B>C>D,结果设置成A>C>B>D,为此debug了一上午
教训:1)多方协作开发事先要把优先级定好,书面文档描述
     2)写代码的时候一定要切忌马虎,有时候一些漫不经心的错误会无法估计地增加很多调试时间。即使是测试代码,也要严谨。养成写完代码检查的习惯!
案例2:
代码执行到一个函数突然跑飞,检查函数没有问题,大家都知道,跑飞在嵌入式系统中是很难跟踪定位问题了,只能根据经验不断做实验缩小疑点范围最后发现是该任务 ......
总记录数:5772; 总页数:962; 每页6 条; 首页 上一页 [896] [897] [898] [899] 900 [901] [902] [903] [904] [905]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号