
Linux
longxj04
这个作者很懒,什么都没留下…
展开
-
cache coherence & memory barrier
最近遇到cache coherence的问题,还没搞清楚具体的原因,这里收集我看过的有用的相关文章http://www.linuxjournal.com/article/8212转载 2015-01-13 14:34:58 · 660 阅读 · 0 评论 -
linux 统计 程序运行时间
这篇文章写的很详细,转一个我们有时需要得到程序的运行时间,但我们也要知道,根本不可能精确测量某一个程序运行的确切时间[3],文献[4]中说的很明白,现摘录如下。 我们平时常用的测量运行时间的方法并不是那么精确的,换句话说,想精确获取程序运行时间并不是那么容易转载 2011-08-29 16:48:33 · 30214 阅读 · 0 评论 -
linux man section 节
用户级命令及应用程序系统调用和内核出错代码库调用设备驱动程序和网络协议标准文件格式游戏和显示各种文件和文档系统管理命令内核规范和接口原创 2011-08-29 16:38:47 · 1301 阅读 · 0 评论 -
Linux 进程调度算法历史
<br />Linux最初的调度算法是一个双向链表,复杂度为o(n)<br />后来发展到O(1)调度算法,采用优先级数组,准确地说是链式hash表,只不过hash key 是进程的优先级<br />再后来由麻醉师发明了RSDL(Rotating Staircase Deadline)调度算法,当进程重新回到原来的N+1阶梯时,将获得n+1倍时间片运行时间<br />现在是ingo的CFS(complete fair schedule)调度算法,采用红黑树,key 是进程的优先级,复杂度为O(logn)原创 2010-09-25 14:53:00 · 986 阅读 · 0 评论 -
linux常用的命令,写下来,免得又忘记了
find grep 组合用来查找所有".h"文件中的含有“helloworld”字符串的文件.find . -name "*.h" -exec grep "helloworld" {} /; 不带图形界面启动emacsemacs -nw原创 2009-09-28 10:19:00 · 578 阅读 · 0 评论 -
linux ipc &pipe fifo
linux进程间通讯的方式有以下几种:1.pipe and fifo2.semaphore3.message4.shared memory region5.socket pipe内核中代表pipe的数据结构是pipe_inode_info,这个结构中有一个buff field用来指定pipe的缓冲区,在2.6.10之前,每个pipe只有一个buff(一个buff包含原创 2009-03-09 13:46:00 · 790 阅读 · 0 评论 -
semaphore & ipc_message posix message queue & ipc_shared Memory
semaphore每个semaphore用一个sem_array来代表,每个sem_array里包含一个或者多个sem结构,sem代表一个原子信号量,用户使用的semaphore跟内核使用的semaphore有个很大的区别在于,用户的semaphore可以包含多个信号值,每个信号值用sem来代表。如果进程使用semop()操作时带上了SEM_UNDO标志,那么进程对信号量的操作将会被一个sem原创 2009-03-09 19:12:00 · 850 阅读 · 0 评论 -
swap cache
这个swap cache的作用不是说要加快磁盘的I/O效率,主要是为了防止页面在swap in和swap out时,进程的同步问题,也就是在进行swap out操作时(将页面内容写入磁盘分区时)进程如果发起了对换出页面的访问,系统对其的处理。有了swap cache的存在,如果页面的数据还没有完全写入磁盘时,这个page frame是在swap cache(swap cache有个引用指向页面),原创 2009-03-06 13:22:00 · 4013 阅读 · 0 评论 -
pfra页面回收算法
linux使用两个list来保存所有的page,一个是active list;一个是inactive list。pfra在回收page frame的时候首先是从inactive里开始的。每个page都有两个位来标识page属于的list,以及是否被访问过。它们是PG_active和PG_referenced.由于这两个位值的不同,page可以分为4种状态:1.PG_active=0 PG_re原创 2009-03-06 13:01:00 · 1254 阅读 · 0 评论 -
swap
linux的一个swap area可以是一个分区,也可以是一个文件,因为可以是一个文件,所有每个swap area包含一个或多个swap extent,用swap_extent来进行表示。每个swap_extent代表一个连续的磁盘空间。如果swap area是一个分区,那么它只有一个swap extent,如果是一个文件那么,文件在磁盘上有多少个连续的分区就有多少个swap extent。l原创 2009-03-06 13:13:00 · 831 阅读 · 0 评论 -
reverse mapping
reverse mapping for anonymous pages为了快速地根据page的指针找到对应的page table项,linux在每个page的mapping域里有一个anon_vma结构,是一个list,保存了所有引用它的vm_area_struct,而vm_area_struct的vm_mm项指向mm_struct,在mm_struct里的pgd则指向进程的全局页表。有原创 2009-03-03 15:08:00 · 1088 阅读 · 0 评论 -
page 的种类,swap的选择
对于swap页面时,页面可以分为一下几类: 1.unredaimable:free page,reserved pages,pages dynamically allocated by the kernel,pages in the kernel mode stacks of the processes,temporarilly locked pa原创 2009-03-03 13:15:00 · 1155 阅读 · 0 评论 -
read ahead memory
linux为了提高I/O的性能,尽量减少I/O请求的发送,主要是为了提高进程顺序读取文件的效率,提供了read ahead的机制,如果linux判断一个进程在顺序读取文件,那么它会提前读取进程所需文件的数据,放在缓存中。判断的标准是:1.如果进程是第一次读取文件,那么检查进程是不是读取文件的第一个page2.读取的文件page是不是上次读取page的下一个满足上面两个条件的进程,l原创 2009-03-03 11:31:00 · 2252 阅读 · 0 评论 -
radix tree
这个tree是一种很有趣的tree,我以前都没见过这种树。在linux中,它的非叶节点是一种radix_tree_node结构,叶节点是一个page结构。radix_tree_node包含一个64长度的数组,用来存放叶节点或者非叶节点。每个被插入的page,都有一个index,用来标识这个page应该被插入的位置。比如当这棵树只有一层的时候,根据index的值,将page插入64数组的inde原创 2009-03-03 11:30:00 · 5104 阅读 · 1 评论 -
page cache
page cache是指将磁盘的数据缓存在内存中。缓存的单位是以一个页面为基本单位的(page frame)。跟page cache有关的核心数据结构是address_space,它被inode引用。一个文件的所有page cache都被挂在address_space的radix tree。除了一个页面单位的缓存外,linux还提供了block buffer,它们被存放在一类很特别的page原创 2009-03-03 11:29:00 · 960 阅读 · 0 评论 -
I/O scheduler
I/O scheduler负责处理对物理设备的操作调度,采用的是电梯调度算法。但是为了满足其它的需求。linux提供四种调度策略:1.the noop elevator:这种策略没有order队列,只有一个dispatch队列,每来一个操作请求就将其放在dispatch队列的最后。2.the cfq(complete fairness queueing) elevator:这种原创 2009-02-24 15:55:00 · 833 阅读 · 0 评论 -
linux对块设备的请求处理
linux对块设备请求的处理是一种层次体系结构,可以分为5层:1.vfs:这层对所有文件系统的一种封装2.mapping layer:这层用来定位数据的物理位置这个操作分为2步: a.首先确定包含文件的文件系统的block size,然后计算请求的数据包含多少file block。 b.调用跟文件系统有关的函数来访问文件的inode,确定请求的数据在磁盘上的逻辑块地址,事实上原创 2009-02-24 15:29:00 · 748 阅读 · 0 评论 -
scatter-gather dma transfer
传统的dma传输要求内存的buffer必须是连续的,但是这种新型的scatter-gather dma transfer可以将连续的硬件sector(传统和新型的传输都要求硬盘sector是连续的)传输到不连续的内存buffer中原创 2009-02-23 12:48:00 · 2017 阅读 · 0 评论 -
diff 比较2个文件夹
比较文件夹记得加上-r, 这样才可以递归所有文件夹,-q可以只输出哪些文件是不一样的,对于比较文件夹,可能这个比较有用。不过-q输出不同的文件时,有些情况是一个文件一个文件夹下有,一个没有,但是-q输出的是2个文件不一样 diff -Nrq a b原创 2011-12-02 09:43:26 · 34540 阅读 · 0 评论 -
corefile配置
转自http://hi.baidu.com/jrckkyy/blog/item/2562320a5bdbc534b1351d95.html查看限制情况 ulimit -a可以看到如下信息core file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedfile转载 2011-12-09 14:08:10 · 2887 阅读 · 0 评论 -
谈一谈mac
也算是用了一段时间的mac了,想谈一谈。mac系统的确很不错,各种界面操作很简单,没有多余的操作。但是mac太不开放了,首先是各种linux下,或者windows下的优秀软件都找不到mac版本,mac app上的应用更是少的可怜。长此以往, mac前途很难说。没有应用程序的系统还有什么用吗?linux装一个软件,好容易,各种包管理工具,各种好的软件都有,mac找不到,下原创 2011-12-19 17:15:08 · 492 阅读 · 0 评论 -
linux设置ulimit方法
查看方法我们可以用ulimit -a来查看所有限制值[root@centos5 ~]# ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedmax nice (-e) 0file size转载 2015-09-14 14:51:19 · 2361 阅读 · 1 评论 -
awk 我解决过的问题
文件:4510将testd的数字放大50倍awk -F'[>|"$3"";}else{print $0;}' test.xml-F 后面可以接受单个字符或者正则表达式,只接受这2种情况。所以解决上面的问题也可以用其它的去分隔。原创 2015-05-28 15:19:29 · 653 阅读 · 1 评论 -
linux实用的小工具,从菜鸟到高手进阶
paste按各种方式合并文件,另外这个工具最大的特点是它的‘-’用法 ls | paste - - - -, 试试应用实例:ls | paste - - -将结果按每行3个进行显示合并文件 f1.txt f2.txt 1 2 n a 3 4 b j paste f1.txt f2原创 2011-12-09 02:50:53 · 2502 阅读 · 0 评论 -
Linux时间统计函数
Linux下用来获取时间,以及计算时间消耗的函数总结参考http://stackoverflow.com/questions/12392278/measure-time-in-linux-getrusage-vs-clock-gettime-vs-clock-vs-gettimeofdaytime() returns the wall-clock time from原创 2014-03-21 13:46:24 · 1005 阅读 · 1 评论 -
linux内存清理和swap内存释放办法
如果swap空间使用到30%以上,系统就变得很慢,如果物理内存够,就需要清理下。原文:http://wushank.blog.51cto.com/3489095/1255906先应该同步一下[root@mysql172 ~]# sync再执行echo 1 > /proc/sys/vm/drop_caches查看内存占用情况[root@mysq转载 2014-01-10 16:56:36 · 48133 阅读 · 2 评论 -
cache line 优化
多线程编程时,为了避免锁,有时会采用数据多份copy的方式,但是如果把这些数据放在了同一个cache line里面,性能得不到提高,是因为cache line的false sharing问题,可以看下这篇文章http://software.intel.com/en-us/articles/avoiding-and-identifying-false-sharing-among-threads/原创 2013-08-27 13:33:05 · 1167 阅读 · 0 评论 -
转:Linux 文件预读,大文件读取可以看下
原文:http://os.51cto.com/art/200711/60574.htmLinux文件预读算法磁盘I/O性能的发展远远滞后于CPU和内存,因而成为现代计算机系统的一个主要瓶颈。预读可以有效的减少磁盘的寻道次数和应用程序的I/O等待时间,是改进磁盘读I/O性能的重要优化手段之一。本文作者是中国科学技术大学自动化系的博士生,他在1998年开始学习Linux,为了优化服转载 2013-06-27 08:24:05 · 1606 阅读 · 0 评论 -
一些琐碎的主题, 大杂烩
ssh的连接个数限制在ssh的配置/etc/ssh/sshd_config里面有2个参数跟连接最大个数有关,一个是maxsessions,一个是maxstartups,看使用的情况将这2个参数设置大点,不然在大量ssh连接的情况下会出现connection错误,这种情况一般是脚本需要运行ssh来执行命令原创 2013-06-19 08:35:57 · 913 阅读 · 0 评论 -
linux 头文件以及库的路径
原文:http://erex.sinaapp.com/?p=126原来在编译的时候可以指定执行时去哪里找需要的lib文件,长知识了本文详细介绍了linux 下gcc头文件指定方法,以及搜索路径顺序的问题。另外,还总结了,gcc动态链接的方法以及路径指定,同样也讨论了搜索路径的顺序问题。本文包含了很多的例子,具有很强的操作性,希望读者自己去走一遍。一.#inclu转载 2013-06-18 11:18:10 · 35296 阅读 · 0 评论 -
usleep的延时测定
测试伪代码大致如下:gettimeofday(begin)usleep(10)gettimeofday(end)printf(end - begin)打印的结果显示,时间差在60微妙(microsec)左右原创 2013-05-21 16:15:22 · 716 阅读 · 0 评论 -
linux下产生core文件以及不产生core文件的条件
原文:http://team.eyou.com/?p=27linux下,产生core文件,和不产生core文件的条件:当我们的程序崩溃时,内核有可能把该程序当前内存映射到core文件里,方便程序员找到程序出现问题的地方。最常出现的,几乎所有C程序员都出现过的错误就是“段错误”了。也是最难查出问题原因的一个错误。下面我们就针对“段错误”来分析core文件的产生、以及我们如转载 2012-07-04 23:02:41 · 15703 阅读 · 0 评论 -
linux随便记记
1. 保存的设置用户id实际用户id,有效用户id都知道的,但是还有个保存的设置用户id,这个id在程序执行时,被设置为有效用户id。它的用处:用户a启动一个设置了uid(b)的程序,那么程序的3个id值为实际用户id(a),有效用户id(b),保存的设置id(b),用户a可以调用setuid将程序的有效id设置为a,那么他怎么把程序的有效id重新设为b呢,怎么验证是否可以设置呢,就靠这个保存原创 2012-08-01 19:37:56 · 510 阅读 · 0 评论 -
Page cache和buffer cache的区别与联系
转自:http://blog.chinaunix.net/space.php?uid=15724196&do=blog&id=128152Page cache和buffer cache一直以来是两个比较容易混淆的概念,在网上也有很多人在争辩和猜想这两个cache到底有什么区别,讨论到最后也一直没有一个统一和正确的结论,在我工作的这一段时间,page cache和buffer cac转载 2012-08-01 17:36:17 · 672 阅读 · 0 评论 -
Linux内存屏障
首先这里有一篇文章介绍内存屏障的,写的挺好的,可以看看http://hi.baidu.com/_kouu/blog/item/67069bb457ff8ad236d3ca15.htmllinux内存屏障是用来解决指令乱序的问题。什么是指令的乱序呢?简单一点说就是本来代码里面是这么写的:instruction a;intstuction b;结果在cpu上执行变成了:原创 2012-07-23 17:21:27 · 646 阅读 · 0 评论 -
linux查看cpu,io,vm,net性能脚本
#!/bin/bashif [ -n "$1" ]; theneth_name=$1elseeth_name="eth0"fiif [ -n "$2" ]; thensleep_time=$2elsesleep_time=1fii=0send_o=`ifconfig $eth_name | grep bytes | a原创 2011-11-24 11:05:20 · 824 阅读 · 0 评论 -
linux文件空洞
可以产生文件空洞的操作:1.移动文件指针到大于文件末尾的位置,然后写入数据2.调用truncate,传入大于文件大小的长度值查看方法:ls查看的是文件的实际大小du查看的是文件实际占用的磁盘空间大小另外:cat拷贝一个有空洞的文件,得到的文件空洞部分将会被填满原创 2012-07-03 09:14:05 · 4285 阅读 · 0 评论 -
(转)频繁分配释放内存导致的性能问题的分析
转自: http://blog.youkuaiyun.com/sniperhuangwei/article/details/5422016现象1 压力测试过程中,发现被测对象性能不够理想,具体表现为: 进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70 2 用ps -o majflt,minflt -C program命令查看,发现majflt每秒增量为0,而min转载 2012-05-10 09:36:10 · 610 阅读 · 0 评论 -
linux对硬件设备的支持
linux对硬件设备的支持分为3种:1.no support at all:这样应用程序只能通过in 和 out指令直接对硬件设备进行操作,这种的典型代表是x window system,这样可以保证效率2.minimal support:内核不能识别设备,但是能识别设备对应的i/o接口,应用程序可以对i/o接口进行read或者write操作,这种的典型的代表是并口和串口设原创 2009-02-23 11:34:00 · 1155 阅读 · 0 评论 -
linux block传输使用的一些术语
1.sector:是物理设备传输的最小单元,一般是512bytes2.block:是linux vfs 使用的基本单元,可以是512,1024,2048,4096byts3.segment:是设备驱动使用的传输单元,一个segment可以是一个内存页,也可以是一个内存页的一部分。需要注意的是,一个block device driver不需要知道block,block的大小,block原创 2009-02-23 13:14:00 · 723 阅读 · 0 评论