Linux
木头不是哑巴
这个作者很懒,什么都没留下…
展开
-
Send和Recv原理及常见问题分析
Send和Recv原理及常见问题分析Send函数int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。参数说明:第一个参数指定发送端套接字描述...原创 2020-05-06 12:44:27 · 1624 阅读 · 0 评论 -
中断上半部,下半部/软中断/tasklet/工作队列
转自:http://blog.csdn.net/jin13277480598/article/details/51019762本文回答了为什么引入中断上部分、下部分以及上半部和下半部各自的分工;同时重点分析了下半部的三种机制及tasklet和工作队列的使用模块,能对整个框架有一个清晰的认识。1. 为什么引入中断上半部、下半部(1)为了解决一个矛盾体:又想中断处理程序运行快,转载 2018-01-21 16:19:51 · 310 阅读 · 0 评论 -
makefile-很重要!
http://blog.csdn.net/ruglcc/article/details/7814546该篇文章为转载,是对原作者系列文章的总汇加上标注。支持原创,请移步陈浩大神博客:http://blog.csdn.net/haoel/article/details/2886makefile很重要 什么是makefile?或许很多Winod转载 2018-01-28 09:51:23 · 1392 阅读 · 0 评论 -
5种I/O模型
1 概念说明在进行解释之前,首先要说明几个概念:用户空间和内核空间进程切换进程的阻塞文件描述符缓存 IO1234567891.1 用户空间与内核空间现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接...转载 2018-03-25 18:39:07 · 217 阅读 · 0 评论 -
多线程死锁的产生以及如何避免死锁
转自:https://blog.csdn.net/ls5718/article/details/51896159一、死锁的定义多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。下面我们通过一些实例来说明死锁现象。先看生活中的一个实例,2个人一起吃...转载 2018-04-19 21:57:32 · 233 阅读 · 0 评论 -
cpu利用率和average load
阿斯蒂芬转载 2019-04-23 21:50:40 · 239 阅读 · 0 评论 -
高性能服务器之性能调优
摘自:https://coolshell.cn/articles/7490.html一、系统性能定义让我们先来说说如何什么是系统性能。这个定义非常关键,如果我们不清楚什么是系统性能,那么我们将无法定位之。我见过很多朋友会觉得这很容易,但是仔细一问,其实他们并没有一个比较系统的方法,所以,在这里我想告诉大家如何系统地来定位性能。 总体来说,系统性能就是两个事:Throughput,吞吐...转载 2019-05-04 18:13:44 · 13005 阅读 · 0 评论 -
高性能服务器之Linux性能分析工具汇总
摘自:http://rdc.hundsun.com/portal/article/731.html出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章。本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列。本文档主要是...转载 2019-05-04 18:33:19 · 1061 阅读 · 0 评论 -
高性能服务器架构之四大杀手
摘自:https://blog.csdn.net/zhoudaxia/article/details/14223755原文:http://pl.atyp.us/content/tech/servers.html本文将与你分享我多年来在服务器开发方面的一些经验。对于这里所说的服务器,更精确的定义应该是每秒处理大量离散消息或者请求的服务程序,网络服务器更符合这种情况,但并非所有的网络程序都是严...转载 2019-05-05 20:24:21 · 248 阅读 · 0 评论 -
硬中断与软中断区别
转自:http://blog.csdn.net/yxfabcdefg/article/details/53127155 http://blog.csdn.net/qq_29350001/article/details/52118662中断上半部分与中断下半部分对比在中断处理程序中,既想让程序运行的快,又想让程序完成的工作量多,这两个目的有抵触。鉴于这两个目的不可调和的矛盾,中断处理...转载 2018-01-21 15:43:56 · 23007 阅读 · 3 评论 -
Linux 系统内核空间与用户空间通信的实现与分析
转自:https://www.ibm.com/developerworks/cn/linux/l-netlink/index.html多数的 Linux 内核态程序都需要和用户空间的进程交换数据,但 Linux 内核态无法对传统的 Linux 进程间同步和通信的方法提供足够的支持。本文总结并比较了几种内核态与用户态进程通信的实现方法,并推荐使用 netlink 套接字实现中断环境与用户态进转载 2018-01-21 12:37:49 · 821 阅读 · 0 评论 -
内核态和用户态通信(二)--实现
本文主要使用netlink套接字实现中断环境与用户态进程通信。系统环境:基于linux 2.6.32.27 和 linux 3.16.36Linux内核态和用户态进程通信方法的提出和实现用户上下文环境运行在用户上下文环境中的代码是可以阻塞的,这样,便可以使用消息队列和Unix域套接字来实现内核态和用户态的通信。但这些的数据传输效率较低,linux内核提供copy_转载 2018-01-21 10:56:44 · 1497 阅读 · 0 评论 -
linux网络编程中的字节序转换
首先解释一下字节序的概念,所谓字节序是指多字节数据的存储顺序,比如0x1234要放在0000H和0001H两存储单元,有两种存储方式:大端格式为[0000H]=12,[0001H]=34和小端格式为[0000H]=34,[0001H]=12。 大端格式:将高位字节数据存储在低地址,低位字节数据存储在高地址 小端格式:将高位字节数据存储在高地址,低位字节数据存储在低地转载 2017-09-20 23:45:26 · 1063 阅读 · 0 评论 -
epoll
为什么是epoll定义按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。 与select/poll的对比select/原创 2017-07-24 21:23:50 · 322 阅读 · 0 评论 -
linux内存屏障
内存屏障出现因为编译器或现在的处理器常会自作聪明地对指令序列进行一些处理,比如数据缓存,读写指令乱序执行等等。如果优化对象是普通内存,那么一般会提升性能而且不会产生逻辑错误。但如果对 I/O操作进行类似优化很可能造成致命错误。所以要使用内存屏障,以强制该语句前后的指令以正确的次序完成。其实在指令序列中放一个wmb的效果是使得指令执行到该处时,把所有缓存的数据写到该写的地方,同时使得wmb前面的写指转载 2017-10-16 23:05:54 · 595 阅读 · 1 评论 -
Linux-内存屏障
概览SMP这种并行架构相比传统的单处理器带来相当可观的性能提升。一个不可避免的问题是并行架构的处理器间的交互问题。一种可能的解决方案是,每个CPU都有自己唯一可访问内存,处理器间通过消息传递进行通信。这种架构的问题是带给程序员(尤其是系统程序员)巨大的编程负担,因为需要处理数据分隔与传递。相反,被广泛应用的另一种架构是,多处理器间共享一个共享的内存地址空间。这种架构下每个处理器依然可能有自转载 2017-10-16 23:24:38 · 1037 阅读 · 0 评论 -
中断的上半部分和下半部分
从 linux1.x版本开始,中断处理程序从概念上被分为上半部分(top half)和下半部分(bottom half)。在中断发生时上半部分的处理 过程立即执行,因为它是完全屏蔽中断的,所以要快,否则其它的中断就得不到及时的处理。但是下半部分(如果有的话)几乎做了中断处理程序所有的事情,可以 推迟执行。内核把上半部分和下半部分作为独立的函数来处理,上半部分的功能就是“登记中断”,决定其相关的下半转载 2017-11-20 23:07:15 · 2874 阅读 · 0 评论 -
中断下半部的三种机制
之前提到过,之所以中断会分成上下两部分,Linux 的上半部就是中断处理程序,下半部采用三种机制来实现,这样分两部执行的策略有利于缩短响应硬件的时限。 中断下半部的处理 对于一个中断,如何划分出上下两部分呢?哪些处理放在上半步,哪些放在下半部?这里有一些经验可供借鉴:如果一个任务对时间十分敏感,将其放在上半部。如果一个任务和硬件有关,将其放在上半部。如果一转载 2017-11-20 23:09:00 · 1975 阅读 · 0 评论 -
Linux RCU锁简析
最近遇到一个问题,大压力测试下咬狗了,定位出来跟RCU相关,还是先简单的捋一捋RCU,也好看看后面能否对RCU做些特定场景下的优化。网上RCU相关的技术博客比较多,先列几个可供参考的:MagicBoy201写的《再谈Linux内核中的RCU机制 》http://blog.chinaunix.net/uid-23769728-id-3080134.html这篇博客写的比较宏观转载 2017-12-11 22:08:55 · 619 阅读 · 0 评论 -
再谈Linux内核中的RCU机制
RCU的设计思想比较明确,通过新老指针替换的方式来实现免锁方式的共享保护。但是具体到代码的层面,理解起来多少还是会有些困难。在《深入Linux设备驱动程序内核机制》第4章中,已经非常明确地叙述了RCU背后所遵循的规则,这些规则是从一个比较高的视角来看,因为我觉得过多的代码分析反而容易让读者在细节上迷失方向。最近拿到书后,我又重头仔细看了RCU部分的文字,觉得还应该补充一点点内容,因为有些东西不一定转载 2017-12-11 22:31:26 · 498 阅读 · 0 评论 -
内核态和用户态通信(一)--认识
Linux中的进程间的通信机制源自于Unix平台上的进程通信机制。Unix的两大分支AT&T Unix和BSD Unix在进程通信实现机制上的各有所不同,前者形成了运行在单个计算机上的System V IPC,后者则实现了基于socket的进程间通信机制。同时linux也遵循IEEE制定的posix IPC标准,在三者的基础上实现以下几种主要的IPC机制:管道(Pipe)和命名管道(Name Pi转载 2018-01-21 10:54:58 · 984 阅读 · 0 评论 -
Epoll模型详解
什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。 转自:htt转载 2017-03-07 22:02:43 · 359 阅读 · 0 评论