Articles of linux kernel

SYN数据包在较高stream量ubuntu 12 nginx服务器上被忽略

我有一个Ubuntu的12.04服务器与端口80的nginx 只有一个防火墙规则,涉及端口映射端口26到25 nginx被设置为侦听端口80,最初以一种相当默认的方式,但现在使用 listen xxxx:80 backlog=5000; nginx不是那个加载的,大概有50个请求,说nginx_status Active connections: 480 server accepts handled requests 84618 84618 143733 Reading: 0 Writing: 4 Waiting: 474 一些用户抱怨他们的一台计算机(例如“只在家中发生”)似乎忽略了其SYN数据包。 他们可以ping没有损失。 有时他们会得到一些对tcp请求的响应。 他们可以在安静的端口上得到响应,例如pop服务器。 但一般来说,他们经历了很长的时间 我有他们的数据包转储显示这一点。 就我而言,我也可以看到一些 IP地址被忽略了。 这里举例来说,从端口2010到端口80的多个SYN数据包不被回应,而服务器正在履行端口2031上的先前连接 02:21:46.950979 IP 72.38.0.37.2010 > 64.91.255.98.80: Flags [S], seq 3835139709, win 65535, options [mss 1460,nop,wscale 3,nop,nop,TS val 0 ecr 0,nop,nop,sackOK], length 0 02:21:49.887320 IP […]

为什么TUX Web服务器死机? Nginx / Lighttpd / Epoll / Kqueue取代它吗?

我记得一个非常快的Linux内核模块,称为“TUX”,用于静态文件,以回答IIS优于Linux的静态文件Web服务性能并解决“C10K问题”。 现在我继续看到: Nginx的 Lighttpd的 的CDN …为“快速静态文件服务”。 如果您的操作系统具有正确的function,快速提供静态文件并不困难。 自从IO完成端口,重叠I / O等发明以来 Tux是否因为安全隐患而死亡? Kqueue / Epoll与Sendfile之类的function结合在一起是否过时了? 什么是最好的解决scheme来服务100%的静态内容 – 比如50个左右的图像模拟一个“animation书”电影packshots。 我明白这个“服务器相关”的问题,但这也是理论上的。 如果它纯粹是静态的,CDN真的会更好吗?

Naglealgorithm的哪个描述是正确的?

以下是Naglealgorithm的两个简单描述。 版本1:等待对方在发送任何部分数据包之前确认先前发送的数据包 版本2:等待对方在发送任何部分分组之前确认先前发送的部分分组 版本1是我从谷歌search的信息,如维基(Nagle的algorithm)或TCP_CORK的理解的结果:超过你想知道 Version 2是我从Naglealgorithm的Linux内核实现中得到的结果 static inline int tcp_nagle_check(const struct tcp_sock *tp, const struct sk_buff *skb, unsigned mss_now, int nonagle) { return (skb->len < mss_now && ((nonagle & TCP_NAGLE_CORK) || (!nonagle && tp->packets_out && tcp_minshall_check(tp)))); } 函数tcp_minshall_check()检查是否所有发送的小包都被确认。 所以我的问题是: 哪一种描述是正确的? 如果两者都是正确的,那么Linux的修改有什么优势呢?

如何计算在ARM程序中执行的指令数量?

我想通过计算指令来执行我想对应用程序进行的更改的性能度量。 但是,我不熟悉ARM的debugging接口知道如何做到这一点。 有甚至有这样的事情的接口? 如果有必要,我完全有能力潜入内核,但我的直觉告诉我这种事情应该在用户空间中实现。

如何从结构页面结构vm_area_struct

基本上,我需要使用页面来识别进程或任务,并据此做出是否允许页面被换出的一些决定。 因为内核AFAIK中的交换模块主要处理结构页面 ,我想知道是否有一些现有的技巧,我缺less。 从include / linux / mm_types.h(v> = 2.6),下面的注释: 系统中的每个物理页面都有一个与之关联的结构页面 它跟踪我们正在使用的网页是什么 时刻。 请注意,我们无法跟踪哪些任务正在使用 一个页面,但如果它是一个页面caching页面,rmap结构可以告诉我们 谁在映射它。 build议我们可以通过一些物理到虚拟的反向映射来做到这一点,但我无法从rmap函数(在mm / rmap.c中)找出如何实现我正在寻找的function。 预先感谢任何帮助,非常感谢。

diff命令忽略新目录中的新文件

我在“修改的目录”(在第三个子级文件夹)中添加了一个新文件,当我尝试使用以下命令生成修补程序文件时,它显示diff命令忽略了新文件: diff –ur "original directory" "modified directory" > version1.patch 我感谢您的帮助..

embedded式系统:我的记忆在哪里?

我有一个基于ARM的embedded式系统。 我只是提出了内核(2.6.34)。 以下是一些命令输出。 我无法解释整个RAM(128 M)。 内核似乎正在使用128 MB – 124368 kB = 6704 kB。 Cache = 1672 kB Slab = 3000 kB 但MemFree只有100812 kB。 我如何解释其余的内存(大约18.5 MB)? 另外Committed_AS值是1512 kB还是表示? # cat /proc/meminfo MemTotal: 124368 kB MemFree: 100812 kB Buffers: 0 kB Cached: 1672 kB SwapCached: 0 kB Active: 1692 kB Inactive: 284 kB Active(anon): 304 kB Inactive(anon): […]

访问内核中用户空间结构的成员会给出错误的值

我看到一个怪异的,我不明白在我的代码的输出。 我有一个头文件中定义的结构。 我在用户空间填充一个结构,然后通过ioctl发送给一个内核模块。 内核模块应该从用户复制它,然后报告用户存储的值。 该结构被定义为: typedef struct Command_par { int cmd; /**< special driver command */ int target; /**< special configuration target */ unsigned long val1; /**< 1. parameter for the target */ unsigned long val2; /**< 2. parameter for the target */ int error; /**< return value */ unsigned long retval; /**< return value […]

性能计数器信息需要

我需要了解性能计数器如何适用于我的研究项目。 我已经理解硬件如何支持对事件的监控。英特尔手册给出了芯片上的性能监控单元如何帮助获得计数器的描述。 我也学到了MSR模块如何获取各种事件的msr寄存器的信息。 我需要学习以下的东西。 1)如何将性能监视工具同时用于多个进程。 我认为所有的寄存器将在上下文切换时保存,并在进程重新启动时加载。浏览互联网我得到了像“pfm_context_load”和“pfm_context_unload”,但它没有太多的信息.​​…..-> “我需要更多关于它是如何工作的详细信息,所以请提供一些链接,可以帮助我达到我的理解的文档“ 2)性能计数器如何在虚拟环境中工作? 在这样的环境下衡量柜台有什么问题? 我浏览了几篇文章,并有一些信息,但需要更多的细节信息。 所以如果有人能指导我一些关于这些主题的文档,或者至less指导我在哪里寻找所有这些信息,是一个很好的帮助! … 如果这不是正确的论坛,那么请指导我正确的地方.. 谢谢 阿努普

如何在内核编程中获得USB设备细节?

我是内核编程的新手,我有一个USB设备的dev_t值。 我想获取设备的详细信息,如供应商ID,产品ID或其他属性,这些属性会因设备而异。 我想在内核空间中执行此操作,而不将程序作为外部模块加载。 我遇到了一个libusb库,但据我所知,它被用在用户空间中。 是否有可能在内核空间也使用libusb,就像我的要求? 如果可能的话,如何导入和设置libusb以便我可以编译内核?