由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 说说我以前做的ultra low latency架构吧
相关主题
什么是OS Memory management and heap structure?high performance computer architecture 这课有啥大意义吗
10G网络到了代码开源了
求推荐一个真心交流技术的地方我是一个线程 (转载)
Goodbug,是不是单机大于1 million/s的I/O你就输了?请xiaoju和digua来讲讲COM技术吧
為什麼golang algernon比C nginx慢幾十倍?golang行嗎我来给FP泼泼凉水吧
所谓的nano second都是骗人的吧问个 C++到C的问题
C++ OO approach to use multi-dim array for HPCc++的高级的东东在实际项目开发中到底有没有很大的应用阿?
求推荐:fortran好用的debug软件码工们干活的时候都在用什么IDE?
相关话题的讨论汇总
话题: latency话题: 架构话题: cpu话题: hft话题: throughput
进入Programming版参与讨论
1 (共1页)
T********i
发帖数: 2416
1
差不多10年前了。C++。彻底的kernel bypass。NUMA, huge TLB,CPU isolation。
当时连靠谱的NUMA allocation机制都找不到。发现最可靠的就是reserve一个huge
page然后根据CPU socket平均分配一下pool。
custom memory allocator。用的最简单的binary。allocate的时候找最接近的2^n空闲
块,如果找不到就在pool里顺序分配一个。free的时候把这个块归还n的list里边。
allocate和free都是个位数指令。理论上内存浪费可能多一倍。实际上没那么多。其实
系统死循环运行,memory usage pattern可以证明是固定的。
我个人经验。这种lock free架构和传统架构是格格不入的。根本没有任何办法能够把
他们整合起来。多核间通信都是invariant message passing。传递的都是指针。这是
硬实时架构,延迟是guaranteed。除非你哪里写错了,那种情况直接主动崩溃是最好的
选择。如果你写对了,消息都是在一个简单的循环队列里边,在消息被擦除前,保证早
被处理了。说穿了,就是在用空间换时间。
目前看来,这是我发明的架构。还没有看到其他人把架构化简到这个程度。我的系统已
经production多年了。
T********i
发帖数: 2416
2
另外这种架构,如果不考虑latency因素,其实NUMA带来的性能提升有限。也就30%左右
吧。反正现在CPU LLC都很大。
关键的是你如何思考整个系统?如何实现?这世界上你要取舍。没有斩尽天下便宜的那
个好事。你要这么做,就不要考虑那么做!
N*****r
发帖数: 94
3

hehe , 任何行业都有两种人,一种人是吃透了东西,会用现有框架,也知道有不足该
怎么改进
另一种就是学了框架,不学明白,到处瞎套,套不上就觉得是世界错了。。。。
这世界上绝大多数都是后者

【在 T********i 的大作中提到】
: 差不多10年前了。C++。彻底的kernel bypass。NUMA, huge TLB,CPU isolation。
: 当时连靠谱的NUMA allocation机制都找不到。发现最可靠的就是reserve一个huge
: page然后根据CPU socket平均分配一下pool。
: custom memory allocator。用的最简单的binary。allocate的时候找最接近的2^n空闲
: 块,如果找不到就在pool里顺序分配一个。free的时候把这个块归还n的list里边。
: allocate和free都是个位数指令。理论上内存浪费可能多一倍。实际上没那么多。其实
: 系统死循环运行,memory usage pattern可以证明是固定的。
: 我个人经验。这种lock free架构和传统架构是格格不入的。根本没有任何办法能够把
: 他们整合起来。多核间通信都是invariant message passing。传递的都是指针。这是
: 硬实时架构,延迟是guaranteed。除非你哪里写错了,那种情况直接主动崩溃是最好的

g****t
发帖数: 31659
4
what kind of test you have done? Application scenario?
what type of IO?
I used to designed an memory diagnostic algorithm to trigger the CPU reset
automatically.

【在 T********i 的大作中提到】
: 差不多10年前了。C++。彻底的kernel bypass。NUMA, huge TLB,CPU isolation。
: 当时连靠谱的NUMA allocation机制都找不到。发现最可靠的就是reserve一个huge
: page然后根据CPU socket平均分配一下pool。
: custom memory allocator。用的最简单的binary。allocate的时候找最接近的2^n空闲
: 块,如果找不到就在pool里顺序分配一个。free的时候把这个块归还n的list里边。
: allocate和free都是个位数指令。理论上内存浪费可能多一倍。实际上没那么多。其实
: 系统死循环运行,memory usage pattern可以证明是固定的。
: 我个人经验。这种lock free架构和传统架构是格格不入的。根本没有任何办法能够把
: 他们整合起来。多核间通信都是invariant message passing。传递的都是指针。这是
: 硬实时架构,延迟是guaranteed。除非你哪里写错了,那种情况直接主动崩溃是最好的

p***o
发帖数: 1252
5
估计是HFT,github上有LMAX出的java轮子。

【在 g****t 的大作中提到】
: what kind of test you have done? Application scenario?
: what type of IO?
: I used to designed an memory diagnostic algorithm to trigger the CPU reset
: automatically.

T********i
发帖数: 2416
6
app是HFT。但是架构是universal的。这东西用Java没戏。虽然也能做,但是属于脱裤
子放屁。

【在 p***o 的大作中提到】
: 估计是HFT,github上有LMAX出的java轮子。
p*u
发帖数: 2454
7
HFT已死。

【在 T********i 的大作中提到】
: app是HFT。但是架构是universal的。这东西用Java没戏。虽然也能做,但是属于脱裤
: 子放屁。

T********i
发帖数: 2416
8
死了挺好的。要是一直都欣欣向荣这世界就更操蛋了。
架构是架构,和HFT有个鸟关系啊?不做HFT还可以做12306呢。
不做12306还可以做别的。呵呵。

【在 p*u 的大作中提到】
: HFT已死。
s********k
发帖数: 6180
9
老魏你做惯了这个高性能,怎么跑来做wireless,继续搞这个高性能啊

【在 T********i 的大作中提到】
: 死了挺好的。要是一直都欣欣向荣这世界就更操蛋了。
: 架构是架构,和HFT有个鸟关系啊?不做HFT还可以做12306呢。
: 不做12306还可以做别的。呵呵。

p*u
发帖数: 2454
10
这方面已经没啥可做的了,各种软硬solutions不计其数,latency is a commodity
now。

【在 s********k 的大作中提到】
: 老魏你做惯了这个高性能,怎么跑来做wireless,继续搞这个高性能啊
相关主题
所谓的nano second都是骗人的吧high performance computer architecture 这课有啥大意义吗
C++ OO approach to use multi-dim array for HPC代码开源了
求推荐:fortran好用的debug软件我是一个线程 (转载)
进入Programming版参与讨论
T********i
发帖数: 2416
11
还是那句话,这个和latency也没啥大关系。这个架构是通用架构。
latency最低,throughput也最高。这方面现在没啥commodity。
我暂时不需要这么高throughput不见得以后不需要。

【在 p*u 的大作中提到】
: 这方面已经没啥可做的了,各种软硬solutions不计其数,latency is a commodity
: now。

p*u
发帖数: 2454
12
其实就是一种microkernel架构呗。

【在 T********i 的大作中提到】
: 还是那句话,这个和latency也没啥大关系。这个架构是通用架构。
: latency最低,throughput也最高。这方面现在没啥commodity。
: 我暂时不需要这么高throughput不见得以后不需要。

T********i
发帖数: 2416
13
哪里那么复杂?就是一个状态自动机而已。

【在 p*u 的大作中提到】
: 其实就是一种microkernel架构呗。
g****t
发帖数: 31659
14
就是几个goto,reset 吧,哈哈


: 哪里那么复杂?就是一个状态自动机而已。



【在 T********i 的大作中提到】
: 哪里那么复杂?就是一个状态自动机而已。
T********i
发帖数: 2416
15
我代码里基本没有goto。基本专业素质还是有的。

【在 g****t 的大作中提到】
: 就是几个goto,reset 吧,哈哈
:
:
: 哪里那么复杂?就是一个状态自动机而已。
:

g****t
发帖数: 31659
16
Linux kernal很多goto
我也用很多,LoL
状态机用goto 不容易出错。
Switch的话,不同c编译器有时候会有小小不同。


: 我代码里基本没有goto。基本专业素质还是有的。



【在 T********i 的大作中提到】
: 我代码里基本没有goto。基本专业素质还是有的。
m*****p
发帖数: 39
17
我也曾經接觸過低延時架構,應用是SS7信令網關,延時要求高,純C打造,很複雜的狀
態機和callback,socket進程間通信,傳struct指針。看來和HFT一樣啊。
T********i
发帖数: 2416
18
状态机就俩函数。
sendMessage
onMessage
这应该是世界上最容易写的东东。根本不需要考虑啥thread, I/O之类的。

【在 g****t 的大作中提到】
: Linux kernal很多goto
: 我也用很多,LoL
: 状态机用goto 不容易出错。
: Switch的话,不同c编译器有时候会有小小不同。
:
:
: 我代码里基本没有goto。基本专业素质还是有的。
:

p*u
发帖数: 2454
19
你这比魏老师的复杂多了,他那个就是kernel接近于零的microkernel架构。

【在 m*****p 的大作中提到】
: 我也曾經接觸過低延時架構,應用是SS7信令網關,延時要求高,純C打造,很複雜的狀
: 態機和callback,socket進程間通信,傳struct指針。看來和HFT一樣啊。

g****t
发帖数: 31659
20
复杂的C代码往往是一点点修出来的各种corner cases补丁


: 我也曾經接觸過低延時架構,應用是SS7信令網關,延時要求高,純C打造,很複
雜的狀

: 態機和callback,socket進程間通信,傳struct指針。看來和HFT一樣啊。



【在 m*****p 的大作中提到】
: 我也曾經接觸過低延時架構,應用是SS7信令網關,延時要求高,純C打造,很複雜的狀
: 態機和callback,socket進程間通信,傳struct指針。看來和HFT一樣啊。

相关主题
请xiaoju和digua来讲讲COM技术吧c++的高级的东东在实际项目开发中到底有没有很大的应用阿?
我来给FP泼泼凉水吧码工们干活的时候都在用什么IDE?
问个 C++到C的问题请推荐C++开发环境
进入Programming版参与讨论
T********i
发帖数: 2416
21
都做差不多的事情。凭啥他那个就复杂啊?
他那就是一个网关,网卡收到消息,送到哪里去。
我那个网卡收到数据,还要经过复杂运算,最后产生order,还要用不同格式送出去。

【在 p*u 的大作中提到】
: 你这比魏老师的复杂多了,他那个就是kernel接近于零的microkernel架构。
s********k
发帖数: 6180
22
听起来这个是erlang的思想?

【在 T********i 的大作中提到】
: 状态机就俩函数。
: sendMessage
: onMessage
: 这应该是世界上最容易写的东东。根本不需要考虑啥thread, I/O之类的。

T********i
发帖数: 2416
23
其实说来说去就那么几招而已。
关键就是底层给你搞好,高层只需要考虑算法而已。
底层也就那么几招。memory model也很简单,说白了就是一个message object的alloc
和free。
thread model都没有了,取而代之的是partition,就是这个message handler分配到哪
几个core上而已。

【在 s********k 的大作中提到】
: 听起来这个是erlang的思想?
p*u
发帖数: 2454
24
他那个要handle的traffic比你的market data要多不少吧。

【在 T********i 的大作中提到】
: 都做差不多的事情。凭啥他那个就复杂啊?
: 他那就是一个网关,网卡收到消息,送到哪里去。
: 我那个网卡收到数据,还要经过复杂运算,最后产生order,还要用不同格式送出去。

T********i
发帖数: 2416
25
你是来抬杠的么?呵呵。
无脑收发很困难么?也就几十行代码吧。

【在 p*u 的大作中提到】
: 他那个要handle的traffic比你的market data要多不少吧。
c*********e
发帖数: 16335
26
求你写的状态机源码,这2个参数的。

【在 T********i 的大作中提到】
: 状态机就俩函数。
: sendMessage
: onMessage
: 这应该是世界上最容易写的东东。根本不需要考虑啥thread, I/O之类的。

f******2
发帖数: 2455
27
老魏可以研究研究nginx,找到感觉后看看能不能提出一个让latency提高一个量级的办法


: 都做差不多的事情。凭啥他那个就复杂啊?

: 他那就是一个网关,网卡收到消息,送到哪里去。

: 我那个网卡收到数据,还要经过复杂运算,最后产生order,还要用不同格式送
出去。



【在 T********i 的大作中提到】
: 你是来抬杠的么?呵呵。
: 无脑收发很困难么?也就几十行代码吧。

n******t
发帖数: 4406
28
Nono, 真正的latency大部分情況下都不是commodity,如果認為是commodity的case,
是人沒把latency和throughput分清楚。
此外,99%的人感覺到的所謂latency問題其實都是throughput的問題,只不過和大部分
人講不通,同時還搞得別人覺得自己是傻逼一個不好賣東西,何必呢?

【在 p*u 的大作中提到】
: 这方面已经没啥可做的了,各种软硬solutions不计其数,latency is a commodity
: now。

s**********3
发帖数: 4
29
嗯,资源固定情况下,低latency和高throughput是互相矛盾的设计需求。
m*****p
发帖数: 39
30
其實挺複雜的,幾十行肯定寫不出來VoIP信令交互和媒體控制網關,支持各種信令:
SS7/SIP/H.248等等,插上DSP卡還可以當媒體網關使用,內部crossbar走ATM,外部
TDM走SONET,IP走10GE,信令走SCTP,媒體走RTP,硬件是私有刀片服務器,Power架構
,當年還是挺先進的,不是普通交換機網關。裏面的狀態特別多,其實是Trillium的中
間件,出問題會core,然後熱切換。後來華為發達了,我就轉行了。

【在 T********i 的大作中提到】
: 都做差不多的事情。凭啥他那个就复杂啊?
: 他那就是一个网关,网卡收到消息,送到哪里去。
: 我那个网卡收到数据,还要经过复杂运算,最后产生order,还要用不同格式送出去。

相关主题
深入说说Nest10G网络到了
公司高层要软件组接管我们的嵌入式软件求推荐一个真心交流技术的地方
什么是OS Memory management and heap structure?Goodbug,是不是单机大于1 million/s的I/O你就输了?
进入Programming版参与讨论
m*****p
发帖数: 39
31
提高latency一個數量級,必須是搞硬件的人,軟件工程師不懂latency。
軟件強調抽象、虛擬化,時間都是虛的,function大部分都是blocking,這樣debug才
容易。
硬件強調Timing、Latency,至少cycle級別,一般都ps級別,全部並行化,軟件的人理
解不了。
這就是為什麼要徹底轉行碼農:硬件學得越好,軟件技能就會越差 or vice versa

办法

【在 f******2 的大作中提到】
: 老魏可以研究研究nginx,找到感觉后看看能不能提出一个让latency提高一个量级的办法
:
:
: 都做差不多的事情。凭啥他那个就复杂啊?
:
: 他那就是一个网关,网卡收到消息,送到哪里去。
:
: 我那个网卡收到数据,还要经过复杂运算,最后产生order,还要用不同格式送
: 出去。
:

T********i
发帖数: 2416
32
老方说latency的时候,其实他的意思是throughput。
即使latency,做low latency软件的还是搞软件的。除非是FPGA硬件。
我个人认为他山之石可以攻玉。我就啥都搞。Web,Java,C/C++,ASM,MCU/X86/ARM,
RF,UART,SPI/SSI,i2c还有上百个RFC。还其他一些有些乱七八糟的东东。

【在 m*****p 的大作中提到】
: 提高latency一個數量級,必須是搞硬件的人,軟件工程師不懂latency。
: 軟件強調抽象、虛擬化,時間都是虛的,function大部分都是blocking,這樣debug才
: 容易。
: 硬件強調Timing、Latency,至少cycle級別,一般都ps級別,全部並行化,軟件的人理
: 解不了。
: 這就是為什麼要徹底轉行碼農:硬件學得越好,軟件技能就會越差 or vice versa
:
: 办法

m******r
发帖数: 1033
33
太牛逼了, 我都看傻了, 还有和华为PK的。
我挺好奇你们懂这么多,是书上看的,还是单位里学的 ,还是业余时间鼓捣出来的?
我见过的牛人和我看同一本书, 看完人家就明白了。 我是得看好几本书,才能琢么出
来,还没人家琢磨透。
你们什么都搞的是看了什么《葵花宝典》 还是纯自己想出来的?
p*u
发帖数: 2454
34
electronic trading里面的ultra low latency,和你说的普通server里面latency/
throughput的trade off根本是两回事。

【在 n******t 的大作中提到】
: Nono, 真正的latency大部分情況下都不是commodity,如果認為是commodity的case,
: 是人沒把latency和throughput分清楚。
: 此外,99%的人感覺到的所謂latency問題其實都是throughput的問題,只不過和大部分
: 人講不通,同時還搞得別人覺得自己是傻逼一個不好賣東西,何必呢?

p*u
发帖数: 2454
35
electronic trading做的基本都是在普通commodity servers上降低latency,而不是
design new hardware。

【在 m*****p 的大作中提到】
: 提高latency一個數量級,必須是搞硬件的人,軟件工程師不懂latency。
: 軟件強調抽象、虛擬化,時間都是虛的,function大部分都是blocking,這樣debug才
: 容易。
: 硬件強調Timing、Latency,至少cycle級別,一般都ps級別,全部並行化,軟件的人理
: 解不了。
: 這就是為什麼要徹底轉行碼農:硬件學得越好,軟件技能就會越差 or vice versa
:
: 办法

1 (共1页)
进入Programming版参与讨论
相关主题
码工们干活的时候都在用什么IDE?為什麼golang algernon比C nginx慢幾十倍?golang行嗎
请推荐C++开发环境所谓的nano second都是骗人的吧
深入说说NestC++ OO approach to use multi-dim array for HPC
公司高层要软件组接管我们的嵌入式软件求推荐:fortran好用的debug软件
什么是OS Memory management and heap structure?high performance computer architecture 这课有啥大意义吗
10G网络到了代码开源了
求推荐一个真心交流技术的地方我是一个线程 (转载)
Goodbug,是不是单机大于1 million/s的I/O你就输了?请xiaoju和digua来讲讲COM技术吧
相关话题的讨论汇总
话题: latency话题: 架构话题: cpu话题: hft话题: throughput