- 博客(15)
- 资源 (1)
- 收藏
- 关注
原创 协程实现的基础与方式
协程实现的基础摘录: http://tech.uc.cn/?p=1055#more-10551. 寄存器%ebp和%esp 一直对寄存器ESP和EBP的概念总是有些混淆,查看定义ESP是栈顶指针,EBP是存取堆栈指针。还是不能很透彻理解。之后借于一段汇编代码,总算是对两者有个比较清晰的理解。下面是按调用约定__stdcall 调用函数test(int
2015-09-29 11:08:05 1291
转载 如何使用strace+pstack利器分析程序性能
如何使用strace+pstack利器分析程序性能引言有时我们需要对程序进行优化、减少程序响应时间。除了一段段地对代码进行时间复杂度分析,我们还有更便捷的方法吗?若能直接找到影响程序运行时间的函数调用,再有针对地对相关函数进行代码分析和优化,那相比漫无目的地看代码,效率就高多了。将strace和pstack工具结合起来使用,就可以达到以上目的。strac
2015-09-29 00:01:46 1206
原创 系统性能指标
系统性能指标1. IOPS 每秒发生的输入/输出操作的次数,是数据传输的一个度量方法。对于磁盘的读写,IOPS指的是每秒读和写的次数。2. 吞吐量 评价工作执行的速率,尤其是在数据传输方面,这个术语用于描述数据传输速度(字节/秒或比特/秒)。在某些情况下(如数据库),吞吐量指的是操作的速度(每秒操作数或每秒业务数)。3. 响应时
2015-09-26 21:03:16 2172
原创 GDB下查看内存命令(x命令)
GDB下查看内存命令(x命令) 你可以使用examine命令(简写是x)来查看内存地址中的值。x命令的语法如下所示: x/ n、f、u是可选的参数。 n 是一个正整数,表示显示内存的长度,也就是说从当前地址向后显示几个地址的内容。 f 表示显示的格式,参见上面。如果地址所指的是字符串,那么格式可以
2015-09-24 00:07:57 953
转载 Linux使用笔记: 定制core dump文件的文件名
Linux使用笔记: 定制core dump文件的文件名在开发过程中,当一个Linux程序异常退出时,我们可以通过core文件来分析它异常的详细原因。缺省情况下,Linux在程序异常时不产生core文件,要想让程序异常退出时产生core dump文件,需要使用ulimit命令更改coredump的设置:ulimit -c unlimited 上面的命令表示在程序异常时产生c
2015-09-23 21:44:29 1795
原创 分布式服务框架:Zookeeper
分布式服务框架:Zookeeper Zookeeper是一个高性能,分布式的,开源分布式应用协调服务。它提供了简单原始的功能,分布式应用可以基于它实现更高级的服务,比如同步,配置管理,集群管理,命名空间。它被设计为易于编程,使用文件系统目录树作为数据模型。服务端跑在java上,提供java和C的客户端API。Zookeeper是Google的Chubby一个开源的实现,是
2015-09-20 15:55:04 675
原创 重试中的指数退避算法
重试中的指数退避算法1. 简介 退避算法: 退避算法是在在单个信道的基于竞争的介质的一种访问控制(MAC)协议。每当一个以上的节点在同一时刻试图访问介质的时候,它会导致分组碰撞。如果相撞的节点试图再次访问信道,在节点做及时同步的时候数据包将发生碰撞。因此,节点需要时间位差。为了产生这种位差,退避算法(例如二进制指数退避(BEB)) 。例如,
2015-09-19 19:15:28 8960
原创 bloom filter与Cuckoo Filter
bloom filter与Cuckoo Filter1. bloom filter 算法是: 创建一个m位BitSet,先将所有位初始化为0,然后选择k个不同的哈希函数。第i个哈希函数对字符串str哈希的结果记为h(i,str),且h(i,str)的范围是0到m-1 。(1) 加入字符串过程 下面是每个字符串处理的过程,首先是将字符串str“记录”
2015-09-19 19:11:51 5144
转载 Git冲突:commit your changes or stash them before you can merge.
Git冲突:commit your changes or stash them before you can merge.今天用git pull来更新代码,遇到了下面的问题:[html] view plaincopyerror: Your local changes to the following files would
2015-09-17 10:19:13 1424
转载 Linux下利用backtrace追踪函数调用堆栈以及定位段错误
Linux下利用backtrace追踪函数调用堆栈以及定位段错误一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈。int backtrac
2015-09-13 22:40:54 915
原创 原子操作实现
原子操作实现关于CAS等原子操作: 在开始说无锁队列之前,我们需要知道一个很重要的技术就是CAS操作——Compare & Set,或是 Compare & Swap,现在几乎所有的CPU指令都支持CAS的原子操作,X86下对应的是CMPXCHG 汇编指令。有了这个原子操作,我们就可以用其来实现各种无锁(lock free)的数据结构。这个操作用C语
2015-09-13 21:52:24 3373
原创 分布式集群管理—认知
分布式集群管理—认知 分布式系统都是大规模机器的应用,所以需要管理大量的集群与机器,特别是云计算领域。 部署管理系统,支持在大规模、多集群上进行飞天部署、冷升级和热升级,进程的配置通过一个专门的配置中心进行推送。 集群的配置中心,用于管理飞天集群机器上的配置。 底层服务,用于监控飞天集群的硬件状态,以及自动处理部分硬件故障。
2015-09-10 00:58:22 1136
原创 获取进程的内核转储
获取进程的内核转储 启用内核转储: $ ulimit -c 0 -c 表示内核转储文件的大小限制。上例中限制为0,表示内核转储无效。 $ ulimit -c unlimited 这个命令的是不限制内核转储文件的大小。设为无限制之后,发生问题时进程的内核可以全部转储到内核转储文件中。在
2015-09-08 23:17:24 998
原创 基于inotify机制的日志收集方法
基于inotify机制的日志收集方法 考虑使用tail file的方法来采集日志数据:每1秒钟去扫描一次被监控文件的尾部,根据上一次的读取位置和当前文件尾部的偏移量,把新写入的数据读出来,并记录当前读取位置。 这种方法有以下特点:只需对原始日志持有读权限,安全性不错。日志收集的时间粒度不够细,无法应对高并发的监控需
2015-09-07 00:44:29 3126
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人