2012年9月17日

“惊群”,看看nginx是怎么解决它的

摘要: 参考:http://blog.csdn.net/russell_tao/article/details/7204260在说nginx前,先来看看什么是“惊群”?简单说来,多线程/多进程(linux下线程进程也没多大区别)等待同一个socket事件,当这个事件发生时,这些线程/进程被同时唤醒,就是惊群。可以想见,效率很低下,许多进程被内核重新调度唤醒,同时去响应这一个事件,当然只有一个进程能处理事件成功,其他的进程在处理该事件失败后重新休眠(也有其他选择)。这种性能浪费现象就是惊群。惊群通常发生在server 上,当父进程绑定一个端口监听socket,然后fork出多个子进程,子进程们开始循环处 阅读全文

posted @ 2012-09-17 19:01 周健 阅读(333) 评论(0) 推荐(0) 编辑

2012年5月10日

关于日志文件系统

摘要: 1 比较重要的登陆文件/var/log/wtmp:记录系统登陆的信息数据,使用last命令来读取/var/log/auth.log:记录系统远程登录的认证信息,包含ssh、ftp、telnet等登录信息/var/log/messages:记录系统重要或错误信息/var/log/httpd,/var/log/mysql.log等是独立服务的日志文件2 关于日志文件记录三阶段记录:klogd,dmesg,/proc/kmsg都通过系统调用sys_syslog来将内核环形缓冲区消息发送到用户态中,其中dmesg可以对printk中的console_loglevle进行调整,并且对内核缓冲区__log 阅读全文

posted @ 2012-05-10 22:01 周健 阅读(1066) 评论(0) 推荐(0) 编辑

2012年5月2日

archlinux

摘要: 1 pacman常见命令更新软件包信息用 pacman -Sy升级软件包信息用 pacman -Syyu查找软件包信息用 pacman -Ss Key更新软件包信息用 pacman -S --info packname安装软件包信息用 pacman -S packname删除软件包信息用 pacman --remove packname升级某个软件包信息用查询某个可执行程序所在的软件包用 pacman -Qo execte_path2 安装apache+mysql+phppacman -S apache mysql php3 让apache支持php:3-1 php文件中没有libphp5.s 阅读全文

posted @ 2012-05-02 17:15 周健 阅读(439) 评论(0) 推荐(0) 编辑

2012年4月24日

Geforce 8400显卡温度的获取

摘要: 1 在安装完lm_sensors后,利用sensors命令显示结果如下:nouveau-pci-0100Adapter: PCI adaptertemp1: +80.0°C (high = +100.0°C, crit = +110.0°C)说明通过内核可以读出显卡温度,并且内核提供了用户态接口文件(位于/sys/devices/pci0000:00/0000:00:01.0/0000.01.00.0/temp1_input),而且pci总线上01:00.0对应显卡设备2 确定显卡温度信息文件所在的系统位置 系统监控信息都在/sys/class/hwmon目录下, 阅读全文

posted @ 2012-04-24 10:23 周健 阅读(1571) 评论(0) 推荐(0) 编辑

2012年4月23日

显卡地址与cpu虚存地址的映射

摘要: 连续物理内存映射、非连续物理内存映射、总线地址、内存映射、I/O端口映射 阅读全文

posted @ 2012-04-23 21:45 周健 阅读(3122) 评论(0) 推荐(0) 编辑

2012年4月18日

intel core 2 duo温度读取

摘要: 1 目的:实现intel core 2 duo cpu的温度检测2 分析:对于intel处理器,每个处理器核心有Digital Thermal Sensors(DTS 数字敏感传感器),该数字传感器的检测值不依赖于外围电路,仅仅取决于 cpu核心的热度,其取值存储于cpu上的一个特殊寄存器中,该寄存器称为Model Specific Register 0x19c(MSR),可以通过rdmsr指令读取,内核代码coretemp.c文件实现了该文件的读取,插入coretemp.ko模块后,可以通过/sys/devices/platform/coretemp.0/目录下的temp1_input、te 阅读全文

posted @ 2012-04-18 21:00 周健 阅读(1882) 评论(1) 推荐(1) 编辑

2012年4月17日

内核中likely和unlikely

摘要: 最近在看内核代码时,在条件判断中出现了likely和unlike,比如在seq_read中有如下代码片段:1 if (err < 0)2 break;3 if (unlikely(err))4 m->count = 0;5 if (unlikely(!m->count)) {6 p = m->op->next(m, p, &pos);7 m->index = pos;8 continue;9 }那么其作用是什么?... 阅读全文

posted @ 2012-04-17 22:18 周健 阅读(1425) 评论(0) 推荐(0) 编辑

2012年4月16日

seq_file文件的内核读取过程

摘要: 1 问题seq_file只是在普通的文件read中加入了内核缓冲的功能,从而实现顺序多次遍历,读取大数据量的简单接口。seq_file一般只提供只读接口,在使用seq_file操作时,主要靠下述四个操作来完成内核自定义缓冲区的遍历的输出操作,其中pos作为遍历的iterator,在seq_read函数中被多次使用,用以定位当前从内核自定义链表中读取的当前位置,当多次读取时,pos非常重要,且pos总是遵循从0,1,2...end+1遍历的次序,其即必须作为遍历内核自定义链表的下标,也可以作为返回内容的标识。但是我在使用中仅仅将其作为返回内容的标示,并没有将其作为遍历链表的下标,从而导致返回数据 阅读全文

posted @ 2012-04-16 19:27 周健 阅读(6992) 评论(2) 推荐(1) 编辑

2012年4月12日

关于vfsmount的理解

摘要: struct vfsmount {struct list_head mnt_hash;struct vfsmount *mnt_parent;/* fs we are mounted on */struct dentry *mnt_mountpoint;/* dentry of mountpoint */struct dentry *mnt_root;/* root of the mounted tree */struct super_block *mnt_sb;/* pointer to superblock */struct list_head mnt_mounts;/* list of 阅读全文

posted @ 2012-04-12 22:30 周健 阅读(4534) 评论(0) 推荐(0) 编辑

内核态实现各个磁盘分区可用内存

摘要: 内核模块、磁盘分区列表、hd_struct、分区使用情况列表 阅读全文

posted @ 2012-04-12 13:17 周健 阅读(963) 评论(0) 推荐(0) 编辑

2012年4月6日

Linux命令之declare - 声明shell变量(不知道没关系、知道了就更好的内建命令)

摘要: 本文链接:http://codingstandards.iteye.com/blog/1150109 (转载请注明出处)用途说明declare命令是bash的一个内建命令,它可以用来声明shell变量,设置变量的属性(Declare variables and/or give them attributes)。该命令也可以写作typeset。虽然人们很少使用这个命令,如果知道了它的一些用法,就会发现这个命令还是挺有用的。常用参数格式:declare格式:typeset格式:declare -p格式:typeset -p显示所有变量的值。格式:declare -p var格式:typeset - 阅读全文

posted @ 2012-04-06 15:34 周健 阅读(1620) 评论(0) 推荐(0) 编辑

2012年4月4日

遍历内核所有的进程

摘要: 我们知道linux系统中的初始话进程为init_task,内核在初始化后期以该构造进程为原型,创建了用户空间的进程树的根init,和内核空间线程树的根kthreadd,用pstree只能显示init树结构。那么linux内核中如何得到,系统中所有进程列表呢?1 按照进程task_struct中组成的血缘关系,来遍历这两个根,这种方式是树状遍历方式,也是最传统简单方式下面将init进程传进去后,即可遍历该进程下所有的子进程 159 static void getLeakingThreads(struct task_struct* root) 160 { 161 struct list_head. 阅读全文

posted @ 2012-04-04 20:36 周健 阅读(3660) 评论(1) 推荐(0) 编辑

proc_fs下进程信息形成原理、目录遍历方式、位图查找

摘要: 我们知道在linux中,proc系统中对于每个进程都有一个进程相关的目录,里面描述了该进程各个方面详细的信息,本文探讨3个问题:1: /proc目录下每进程子目录的形成[动态遍历当前进程列表形成]2:每进程子目录下子目录/子文件的形成[静态数组]3:/proc/net/子目录下子目录、子文件形成[系统初始化时形成]内容:点击打开链接0 首先介绍proc_dir_entry的层次结构struct proc_dir_entry { unsignedint low_ino; unsignedshort namelen; constchar *name; mode_tmode;... 阅读全文

posted @ 2012-04-04 17:00 周健 阅读(1746) 评论(0) 推荐(0) 编辑

导航