最新 | 最热门 | 最高评价

+0  Erlang内存体系调优

Tag: Erlang探索 | 调优 | memory | tuning | VM
Yu Feng 发于 2014年04月28日 11:31 | 点击: 1890 | 展开摘要
原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: Erlang内存体系调优

Lukas Larsson,核心的VM开发者,最近很活跃,在Erlang内存体系上做了不少工作,包括recon项目的贡献。

他最近在erlang factory会议上分享了“Memory Allocators in the VM, Memory Management: Battle Storie”, 参见这里。

Erlang内存体系架构是个复杂的体系,一般的开发人员能难一眼就能

查看全文: http://www.udpwork.com/item/12187.html

+0  量化Erlang进程调度的代价

Tag: Erlang探索 | 源码分析 | 调优 | context_switches | schedule
Yu Feng 发于 2013年11月14日 13:36 | 点击: 1288 | 展开摘要
原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: 量化Erlang进程调度的代价

我们都知道erlang的基本哲学之一就是“小消息大计算”,简单的说就是尽可能的在消息里面携带完整的计算需要的信息,然后计算要尽可能的多,最好远超过消息传递的代价。但是为什么要这样呢?erlang消息发送的效率是很高的, 参见这篇文章

Roughly speaking, I’m seeing 3.4 million deliveries per second one-way,

查看全文: http://www.udpwork.com/item/11357.html

+0  Erlang 网络密集型服务器的瓶颈和解决思路

Tag: Erlang探索 | 源码分析 | 网络编程 | 调优 | migrated | system_info(scheduling_statistics) | total_scheduling_statistics
Yu Feng 发于 2013年11月11日 14:35 | 点击: 1410 | 展开摘要
原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: Erlang 网络密集型服务器的瓶颈和解决思路

最近我们的Erlang IO密集型的服务器程序要做细致的性能提升,从每秒40万包处理提升到60万目标,需要对进程和IO调度器的原理很熟悉,并且对行为进行微调,花了不少时间参阅了相关的文档和代码。

其中最有价值的二篇文章是:

1. Characterizing the Scalability of Erlang VM on Many-core Process

查看全文: http://www.udpwork.com/item/11358.html

+0  Erlang取当前时间的瓶颈以及解决方案

Tag: Erlang探索 | 源码分析 | 调优 | erlang:now | lcnt | os:timestamp | rebar
Yu Feng 发于 2013年11月04日 17:36 | 点击: 1388 | 展开摘要
原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: Erlang取当前时间的瓶颈以及解决方案

高性能网络服务器通常会涉及大量和时间相关的场景和操作,比如定时器,读取事件的发生时间,日志等等。

erlang提供了二种方式来获取时间:

1. erlang:now()

2. os:timestamp()

获取取到时间后,我们通常用calendar:now_to_universal_time来格式化类似”{{2013,11,4},{8,46,2

查看全文: http://www.udpwork.com/item/11360.html

+0  inet驱动新增加{active,N} socket选项

Tag: Erlang探索 | 源码分析 | 调优 | active | gen_tcp | inet:setopts | N}
Yu Feng 发于 2013年11月03日 21:41 | 点击: 1183 | 展开摘要
原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: inet驱动新增加{active,N} socket选项

Erlang实现的网络服务器性能是非常高的,一个典型的服务器比如proxy我们可以处理40万个包的进出,链接数在万级别的。当然这么高的网络能力和底层的epoll实现有很大关系。那么通常我们的gen_tcp收到内核协议栈过来完整的封包的时候,有三种方式可以通知到我们,参见inet:setopts文档

{active, true | false | o

查看全文: http://www.udpwork.com/item/11361.html

+0  Erlang调度器的利用率调查

Tag: Erlang探索 | 生活 | 调优 | scheduler_wall_time | statistics
Yu Feng 发于 2013年11月03日 20:48 | 点击: 1457 | 展开摘要
原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: Erlang调度器的利用率调查

Erlang的调度器效率非常高,大概在128核的情况下有80%的利用率,即使是这样,由于CPU和内存体系的结构的限制,调度器的实现还是有大量的锁存在。erts的实现为了避免core scale的问题,通常不会采用锁在那里傻等,而是采用更乐观的无锁算法,这样会有不少的CPU空转现象。

那么如何评估调度器的效率呢?我们可以从系统层面,比如从top看,每个调度器线程忙不忙。但是这

查看全文: http://www.udpwork.com/item/11362.html

+0  R16B03新增加super carrier来减少mmap的系统调用

Tag: Erlang探索 | 源码分析 | 调优 | +MMscrpm | +MMscs | super carrier
Yu Feng 发于 2013年11月03日 20:01 | 点击: 1267 | 展开摘要
原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: R16B03新增加super carrier来减少mmap的系统调用

Erlang内存分配的框架一句话总结,从erts_alloc文档摘抄如下:

erts_alloc is an Erlang Run-Time System internal memory allocator library. erts_alloc provides the Erlang Run-Time System with a nu

查看全文: http://www.udpwork.com/item/11363.html

+0  R16B port并行机制详解

Tag: Erlang探索 | 源码分析 | 调优 | +spp | parallelism | port | watermark
Yu Feng 发于 2013年10月20日 16:08 | 点击: 1456 | 展开摘要
原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: R16B port并行机制详解

R16B发布的时候,其中一个很大的亮点就是R16B port并行机制, 摘抄官方的release note如下:

– Latency of signals sent from processes to ports — Signals

from processes to ports where previously always delivered

查看全文: http://www.udpwork.com/item/10980.html

+0  Erlang vheap刨析和注意事项

Tag: Erlang探索 | 源码分析 | 调优 | hmbs | min_bin_vheap_size | vheap
Yu Feng 发于 2013年10月19日 22:39 | 点击: 1480 | 展开摘要
原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: Erlang vheap刨析和注意事项

Erlang从R13B03开始引入了vheap的概念,具体参见这篇文章:R13B03 binary vheap有助减少binary内存压力

官方的release note里面简单的解释了下:

OTP-8202 A new garbage collecting strategy for binaries which is more

aggressive than

查看全文: http://www.udpwork.com/item/10978.html

+0  调查使用binary最多TOPN进程

Tag: Erlang探索 | 源码分析 | 调优 | binary | process_info
Yu Feng 发于 2013年10月15日 21:23 | 点击: 1454 | 展开摘要
原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: 调查使用binary最多TOPN进程

Erlang程序是非常健壮的,通常一个典型的虚拟机里面跑很多进程,这些进程即使有bug,按照erlang的哲学是快速死掉,系统留下异常堆栈,很容易发现问题。照理说erlang是很少crash的,但实际情况不是这样的。

在erlang VM crash的案例中,我们会发现大部分的网络服务器的原因都是binary内存不够申请不出来,所以内存短缺是最致命的影响稳定的因素。

查看全文: http://www.udpwork.com/item/10964.html

+0  erlang和其他语言读文件性能大比拼

Tag: Erlang探索 | Linux | 调优 | dd | file | read | thread_pool_size
Yu Feng 发于 2013年08月28日 15:25 | 点击: 1793 | 展开摘要
原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: erlang和其他语言读文件性能大比拼

百岁同学说:

今天公司技术比武,比赛题目是给一个1.1g的大文本,统计文本中词频最高的前十个词。花了两天用erlang写完了代码,但是放到公司16核的机器上这么一跑,结果不比不知道,一比吓一条。erlang写的代码执行时间花了55秒左右,同事们有的用java,有的用C,还有的用C++,用C最快一个老兄只花了2.6秒,用java的也只用了3.2秒。相比之下erlang

查看全文: http://www.udpwork.com/item/10531.html

+0  Memcached调优

Tag: Performance Tuning | Memcached | XMemcached | 缓存 | 调优
四火 发于 2013年08月02日 19:54 | 点击: 1921 | 展开摘要
文章系本人原创,转载请保持完整性并注明出自《四火的唠叨》

项目中有一个对实时响应性比较高的服务,引入了Memcached以减少延迟和减少数据库压力。但是期间遇到了一些问题,这里记录一些调优细节。 

客户端选择

最开始我使用的是Memcached Java Client,但是最后放弃了,放弃原因包括:

有时会出现的“No Thread For Socket”异常,我记录在这里;

它不支持NOREPLY模式(在这种模式下,更新缓存的set操作可以不需要Memcached

查看全文: http://www.udpwork.com/item/10333.html
|<<<12345>>>| 一共5页, 56条记录