thanks. I've test in a separate linux server(Intel(R) Xeon(R) CPU E5-2670 v3 @ 2.30GHz * 48)
2018/01/23 14:41:14 CheckRequest time : 3393 2018/01/23 14:41:14 ----------------------- trace begin!!! 2018/01/23 14:41:14 CheckRequest time : 3021 2018/01/23 14:41:19 Total : 107214 2018/01/23 14:41:19 0-1ms : 99.99813 % 2018/01/23 14:41:19 1-2ms : 0 % 2018/01/23 14:41:19 2-5ms : 0.001865428 % 2018/01/23 14:41:19 5-10ms : 0 % 2018/01/23 14:41:19 10-20ms: 0 % 2018/01/23 14:41:19 20+ms : 0 % 2018/01/23 14:41:19 ----------------------- trace stop!!! 2018/01/23 14:41:24 Total : 138002 2018/01/23 14:41:24 0-1ms : 100 % 2018/01/23 14:41:24 1-2ms : 0 % 2018/01/23 14:41:24 2-5ms : 0 % 2018/01/23 14:41:24 5-10ms : 0 % 2018/01/23 14:41:24 10-20ms: 0 % 2018/01/23 14:41:24 20+ms : 0 % 2018/01/23 14:41:29 Total : 132976 2018/01/23 14:41:29 0-1ms : 100 % 2018/01/23 14:41:29 1-2ms : 0 % 2018/01/23 14:41:29 2-5ms : 0 % 2018/01/23 14:41:29 5-10ms : 0 % 2018/01/23 14:41:29 10-20ms: 0 % 2018/01/23 14:41:29 20+ms : 0 % 2018/01/23 14:41:34 Total : 140598 2018/01/23 14:41:34 0-1ms : 100 % 2018/01/23 14:41:34 1-2ms : 0 % 2018/01/23 14:41:34 2-5ms : 0 % 2018/01/23 14:41:34 5-10ms : 0 % 2018/01/23 14:41:34 10-20ms: 0 % 2018/01/23 14:41:34 20+ms : 0 % 在 2018年1月23日星期二 UTC+8上午1:30:33,Jesper Louis Andersen写道: > > Beware of running the test generator on the same machine as the SUT > (system under test). > > There are several things here: > > * On localhost, the network stack bypasses several kernel parts. This may > lead to wrong test data. > * The test generator might steal resources from the SUT, skewing the > numbers > * Desktop machines are sensitive to external noise. A music player can be > enough to mess with the data set. > * If you are not handling CPU powersaving or other such features, then you > test may be wrong. > * If your target system is Linux, I'd recommend you don't use a MacOS > benchmark as the final verdict. > > > On Mon, Jan 22, 2018 at 4:42 PM <matthe...@gmail.com <javascript:>> wrote: > >> The higher priority -19 we're interested in has the Permission denied >> error message, the command needs to be run with elevated OS privileges. Is >> waf-client the program that has the real-time requirement? >> >> If you separate the calling process out to a separate computer do you >> still see the delay? >> >> Matt >> >> >> On Sunday, January 21, 2018 at 8:58:34 PM UTC-6, sotte...@gmail.com >> wrote: >>> >>> I tested two scenarios for the priority value(19 and -19). The priority >>> setting does affect the waf-client rt : >>> >>> >>> *➜ waf-client git:(master) ✗ nice -n -19 ./waf-client* >>> nice: setpriority: Permission denied >>> 2018/01/22 10:37:47 Add Client : 0.0.0.0:8000 >>> 2018/01/22 10:37:47 ----------------------- trace begin!!! >>> 2018/01/22 10:37:47 Total : 2956 >>> 2018/01/22 10:37:47 0-1ms : 4.634641 % >>> 2018/01/22 10:37:47 1-2ms : 0 % >>> 2018/01/22 10:37:47 2-5ms : 0 % >>> 2018/01/22 10:37:47 5-10ms : 0 % >>> 2018/01/22 10:37:47 10-20ms: 0 % >>> 2018/01/22 10:37:47 20+ms : 0 % >>> 2018/01/22 10:37:52 Total : 51903 >>> 2018/01/22 10:37:52 0-1ms : 99.98266 % >>> 2018/01/22 10:37:52 1-2ms : 0.015413367 % >>> 2018/01/22 10:37:52 2-5ms : 0.0019266709 % >>> 2018/01/22 10:37:52 5-10ms : 0 % >>> 2018/01/22 10:37:52 10-20ms: 0 % >>> 2018/01/22 10:37:52 20+ms : 0 % >>> 2018/01/22 10:37:55 ----------------------- trace stop!!! >>> 2018/01/22 10:37:57 Total : 57744 >>> 2018/01/22 10:37:57 0-1ms : 99.99827 % >>> 2018/01/22 10:37:57 1-2ms : 0.0017317816 % >>> 2018/01/22 10:37:57 2-5ms : 0 % >>> 2018/01/22 10:37:57 5-10ms : 0 % >>> 2018/01/22 10:37:57 10-20ms: 0 % >>> 2018/01/22 10:37:57 20+ms : 0 % >>> 2018/01/22 10:38:02 Total : 63337 >>> 2018/01/22 10:38:02 0-1ms : 99.99526 % >>> 2018/01/22 10:38:02 1-2ms : 0.004736568 % >>> 2018/01/22 10:38:02 2-5ms : 0 % >>> 2018/01/22 10:38:02 5-10ms : 0 % >>> 2018/01/22 10:38:02 10-20ms: 0 % >>> 2018/01/22 10:38:02 20+ms : 0 % >>> 2018/01/22 10:38:07 Total : 63352 >>> 2018/01/22 10:38:07 0-1ms : 99.99526 % >>> 2018/01/22 10:38:07 1-2ms : 0.0047354465 % >>> 2018/01/22 10:38:07 2-5ms : 0 % >>> 2018/01/22 10:38:07 5-10ms : 0 % >>> 2018/01/22 10:38:07 10-20ms: 0 % >>> 2018/01/22 10:38:07 20+ms : 0 % >>> 2018/01/22 10:38:12 Total : 62601 >>> 2018/01/22 10:38:12 0-1ms : 99.984024 % >>> 2018/01/22 10:38:12 1-2ms : 0.004792256 % >>> 2018/01/22 10:38:12 2-5ms : 0.007987093 % >>> 2018/01/22 10:38:12 5-10ms : 0 % >>> 2018/01/22 10:38:12 10-20ms: 0.0031948371 % >>> 2018/01/22 10:38:12 20+ms : 0 % >>> ^C >>> *➜ waf-client git:(master) ✗ nice -n 19 ./waf-client* >>> 2018/01/22 10:38:20 Add Client : 0.0.0.0:8000 >>> 2018/01/22 10:38:20 ----------------------- trace begin!!! >>> 2018/01/22 10:38:20 Total : 36113 >>> 2018/01/22 10:38:20 0-1ms : 5.0812726 % >>> 2018/01/22 10:38:20 1-2ms : 0.0027690858 % >>> 2018/01/22 10:38:20 2-5ms : 0 % >>> 2018/01/22 10:38:20 5-10ms : 0 % >>> 2018/01/22 10:38:20 10-20ms: 0 % >>> 2018/01/22 10:38:20 20+ms : 0 % >>> 2018/01/22 10:38:25 Total : 54688 >>> 2018/01/22 10:38:25 0-1ms : 99.97074 % >>> 2018/01/22 10:38:25 1-2ms : 0.025599767 % >>> 2018/01/22 10:38:25 2-5ms : 0 % >>> 2018/01/22 10:38:25 5-10ms : 0.0018285547 % >>> 2018/01/22 10:38:25 10-20ms: 0.0018285547 % >>> 2018/01/22 10:38:25 20+ms : 0 % >>> 2018/01/22 10:38:28 ----------------------- trace stop!!! >>> 2018/01/22 10:38:28 CheckRequest time : 2502 >>> 2018/01/22 10:38:30 Total : 58819 >>> 2018/01/22 10:38:30 0-1ms : 99.983 % >>> 2018/01/22 10:38:30 1-2ms : 0.015301178 % >>> 2018/01/22 10:38:30 2-5ms : 0.0017001309 % >>> 2018/01/22 10:38:30 5-10ms : 0 % >>> 2018/01/22 10:38:30 10-20ms: 0 % >>> 2018/01/22 10:38:30 20+ms : 0 % >>> 2018/01/22 10:38:32 CheckRequest time : 2608 >>> 2018/01/22 10:38:32 CheckRequest time : 2372 >>> 2018/01/22 10:38:35 Total : 65278 >>> 2018/01/22 10:38:35 0-1ms : 99.9663 % >>> 2018/01/22 10:38:35 1-2ms : 0.030638194 % >>> 2018/01/22 10:38:35 2-5ms : 0.0030638194 % >>> 2018/01/22 10:38:35 5-10ms : 0 % >>> 2018/01/22 10:38:35 10-20ms: 0 % >>> 2018/01/22 10:38:35 20+ms : 0 % >>> 2018/01/22 10:38:40 Total : 61372 >>> 2018/01/22 10:38:40 0-1ms : 99.96578 % >>> 2018/01/22 10:38:40 1-2ms : 0.016294075 % >>> 2018/01/22 10:38:40 2-5ms : 0.008147038 % >>> 2018/01/22 10:38:40 5-10ms : 0.0048882226 % >>> 2018/01/22 10:38:40 10-20ms: 0.0048882226 % >>> 2018/01/22 10:38:40 20+ms : 0 % >>> >>> >>> 在 2018年1月19日星期五 UTC+8下午10:24:31,matthe...@gmail.com写道: >>>> >>>> It looks like MacOS had CPU PM options removed from pmset in the last >>>> few years, so I’m not sure it’s possible to disable in recent versions. On >>>> Ubuntu I was able to get cpufrequtils to work a few months ago: >>>> https://askubuntu.com/questions/523640/how-i-can-disable-cpu-frequency-scaling-and-set-the-system-to-performance >>>> >>>> Have you tried setting process priority with nice? >>>> https://superuser.com/questions/42817/is-there-any-way-to-set-the-priority-of-a-process-in-mac-os-x >>>> >>>> Matt >>>> >>>> On Friday, January 19, 2018 at 1:14:25 AM UTC-6, sotte...@gmail.com >>>> wrote: >>>>> >>>>> a. request client and server running on the same computer. >>>>> b. Unfortunately, I have not find the method how to disable OS power >>>>> management. I re-running this case on linux server, result shows that >>>>> there is almost no time out. I suspect the P's block is affected by the >>>>> external operating environment, and the M was not scheduled in time. >>>>> >>>>> 在 2018年1月19日星期五 UTC+8上午1:25:43,matthe...@gmail.com写道: >>>>>> >>>>>> Is your test request source running on the same computer? Have you >>>>>> disabled OS power management features? >>>>>> >>>>>> Matt >>>>>> >>>>>> On Thursday, January 18, 2018 at 10:23:43 AM UTC-6, >>>>>> sotte...@gmail.com wrote: >>>>>>> >>>>>>> I developed an RPC Service with high requirements for real-time >>>>>>> performance. There was an unexpected delay at a small probability, and >>>>>>> I do >>>>>>> not know how this happened. I suspect this is go schedule related, of >>>>>>> course, this may also be caused by a code bug. >>>>>>> >>>>>>> Anyone can solve this problem, it will be a great help to me! >>>>>>> >>>>>>> Following is my test process. trace.out in the attachment. >>>>>>> >>>>>>> >>>>>>> GO-Version:OS X go1.9.2 go1.10beta2 compile package >>>>>>> ::go1.10beta2.darwin-amd64.tar.gz >>>>>>> Net : localhost To localhost >>>>>>> QPS : 11K >>>>>>> >>>>>>> RT statistics >>>>>>> >>>>>>> *TestTime* >>>>>>> >>>>>>> *Test Count* >>>>>>> >>>>>>> *0-1ms* >>>>>>> >>>>>>> *1-2ms* >>>>>>> >>>>>>> *2-5ms* >>>>>>> >>>>>>> *5-10ms* >>>>>>> >>>>>>> *10-20ms* >>>>>>> >>>>>>> *20+ms* >>>>>>> >>>>>>> *2018-01-16* >>>>>>> >>>>>>> 58409 >>>>>>> >>>>>>> 99.97432% >>>>>>> >>>>>>> 0.022256844% >>>>>>> >>>>>>> 0.00342413% >>>>>>> >>>>>>> 0 >>>>>>> >>>>>>> 0 >>>>>>> >>>>>>> 0 >>>>>>> >>>>>>> 51707 >>>>>>> >>>>>>> 99.99226% >>>>>>> >>>>>>> 77358964% >>>>>>> >>>>>>> 0 >>>>>>> >>>>>>> 0 >>>>>>> >>>>>>> 0 >>>>>>> >>>>>>> 0 >>>>>>> >>>>>>> 54650 >>>>>>> >>>>>>> 99.93413 % >>>>>>> >>>>>>> >>>>>>> 0.027447393% >>>>>>> >>>>>>> 0.021957913% >>>>>>> >>>>>>> 0.0036596523% >>>>>>> >>>>>>> 0.0054894784% >>>>>>> >>>>>>> 0.0073193046% >>>>>>> >>>>>>> >>>>>>> By analyzing trace.out, in addition to the GC, I found two places >>>>>>> that lead to very long blocks >>>>>>> >>>>>>> - Net IO operator >>>>>>> - Channel operator >>>>>>> >>>>>>> >>>>>>> <https://lh3.googleusercontent.com/-f3CwZlmkYo8/WmBYqfozeeI/AAAAAAAAAAo/fTdh0qtEmNYSHJqLwU-RJvLFhJiOcdmRACLcBGAs/s1600/9135C3F2-C6DA-4199-A27D-0660497B553B.png> >>>>>>> >>>>>>> >>>>>>> <https://lh3.googleusercontent.com/-qoqFDYLVtZg/WmBYm8unb3I/AAAAAAAAAAk/-V_-ck6IqVgtuMOT6uKvC3mm_oilw1bgQCLcBGAs/s1600/9135C3F2-C6DA-4199-A27D-0660497B553B.png> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> ReadLoop Code : >>>>>>> >>>>>>> for { head := c.dataBuf[0:WafBaseHeaderLen] _, err >>>>>>> := io.ReadFull(c.TcpConn, head) if err != nil { >>>>>>> log.Println("WafConn Err :", err.Error()) return >>>>>>> nil, err } dataLen, err := c.GetLength(head) >>>>>>> >>>>>>> >>>>>>> //omit some exception handler _, err = >>>>>>> io.ReadFull(c.TcpConn, c.dataBuf[WafBaseHeaderLen: >>>>>>> WafBaseHeaderLen+dataLen]) if err != nil { >>>>>>> log.Println("WafConn Err :", err.Error()) return >>>>>>> nil, err } msg = &conncodec.WafMessage{ >>>>>>> } err = msg.Decode(c.dataBuf[:WafBaseHeaderLen + >>>>>>> dataLen]) return msg, err } >>>>>>> >>>>>>> >>>>>>> >>>>>>> channel init >>>>>>> >>>>>>> waf_resp := make(chan WafProxyResp, 1) >>>>>>> >>>>>>> waiting channel read event code: >>>>>>> >>>>>>> select { case result := <-waf_resp: >>>>>>> *//do something* case <-timer.C: //10 ms timeout >>>>>>> this.request_cache.DisposeRequest(request_id) >>>>>>> monitor.QPSStatAddWafRecvTimeout(1) return >>>>>>> GenWafResp(WAF_SUCCESS, "receive time out") } >>>>>>> >>>>>>> >>>>>>> Send Channel Code : >>>>>>> >>>>>>> select { case resp_chan <- resp: >>>>>>> //只使用一次,写入完成后关闭; close(resp_chan) >>>>>>> default: log.Print("Default fail !!!!! request >>>>>>> id : ", request_id) } >>>>>>> >>>>>>> >>>>>>> -- >> You received this message because you are subscribed to the Google Groups >> "golang-nuts" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to golang-nuts...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.