Hi Pieter,
Correct-- the USR and SYS belong to the Redis process alone, derived
from INFO by our monitoring system.
I tried strace initially at a 0.1ms threshold, but switched to a 1.0ms
threshold due to the volume of calls emitted at the 0.1ms level. What
follows is a few lines of each run. Apologies for the verbose post!
Cheers,
Dean
1.0ms threshold:
10:18:16.188622 epoll_ctl(3, EPOLL_CTL_MOD, 12, {EPOLLIN, {u32=12,
u64=12}}) = 0 <0.003865>
10:18:16.233628 write(13, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.001364>
10:18:16.253800 write(12, "+QUEUED\r\n+QUEUED\r\n+QUEUED\r\n+QUEU"...,
1496) = 1496 <0.002405>
10:18:16.276025 epoll_ctl(3, EPOLL_CTL_MOD, 7, {EPOLLIN, {u32=7,
u64=7}}) = 0 <0.001079>
10:18:16.409464 epoll_ctl(3, EPOLL_CTL_MOD, 13, {EPOLLIN|EPOLLOUT,
{u32=13, u64=13}}) = 0 <0.001190>
10:18:16.511810 write(7, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.001181>
10:18:16.670016 write(12, "+QUEUED\r\n+QUEUED\r\n+QUEUED\r\n+QUEU"...,
1496) = 1496 <0.001052>
10:18:18.216759 write(9, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.001172>
10:18:18.217999 epoll_ctl(3, EPOLL_CTL_MOD, 9, {EPOLLIN, {u32=9,
u64=9}}) = 0 <0.004349>
10:18:18.245676 epoll_ctl(3, EPOLL_CTL_MOD, 18, {EPOLLIN|EPOLLOUT,
{u32=18, u64=18}}) = 0 <0.002916>
10:18:18.257650 write(19, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.001471>
10:18:19.787420 epoll_ctl(3, EPOLL_CTL_MOD, 15, {EPOLLIN, {u32=15,
u64=15}}) = 0 <0.001252>
10:18:20.752972 epoll_ctl(3, EPOLL_CTL_MOD, 5, {EPOLLIN, {u32=5,
u64=5}}) = 0 <0.001309>
10:18:21.033418 write(10, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.012612>
10:18:23.815541 read(10, "*1\r\n$5\r\nMULTI\r\n*4\r\n$4\r\nLREM\r\n
$7\r"..., 1024) = 107 <0.003376>
10:18:24.203077 write(16, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.004387>
10:18:25.174018 epoll_ctl(3, EPOLL_CTL_MOD, 6, {EPOLLIN|EPOLLOUT,
{u32=6, u64=6}}) = 0 <0.007471>
10:18:26.663663 write(8, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.001003>
10:18:26.944797 write(19, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.001202>
10:18:28.271733 write(18, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.011329>
10:18:28.294274 write(12, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.001754>
10:18:31.800587 write(14, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.005289>
10:18:31.961712 write(18, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.001020>
10:18:34.646210 write(14, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.001851>
10:18:35.661158 epoll_ctl(3, EPOLL_CTL_MOD, 6, {EPOLLIN, {u32=6,
u64=6}}) = 0 <0.001956>
10:18:38.229525 write(19, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.003662>
10:18:39.047475 write(7, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.003360>
10:18:39.377400 write(9, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.001430>
10:18:44.789518 write(7, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.006046>
10:18:45.134278 epoll_ctl(3, EPOLL_CTL_MOD, 7, {EPOLLIN|EPOLLOUT,
{u32=7, u64=7}}) = 0 <0.015380>
10:18:46.183777 write(9, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.001778>
10:18:46.803998 write(18, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.003490>
10:18:47.478052 epoll_ctl(3, EPOLL_CTL_MOD, 9, {EPOLLIN, {u32=9,
u64=9}}) = 0 <0.001012>
0.1ms threshold:
10:15:21.038459 epoll_ctl(3, EPOLL_CTL_MOD, 15, {EPOLLIN|EPOLLOUT,
{u32=15, u64=15}}) = 0 <0.000187>
10:15:21.048211 write(7, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.000119>
10:15:21.051098 write(7, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.000126>
10:15:21.051857 write(13, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.000143>
10:15:21.056802 write(15, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.000163>
10:15:21.061832 write(7, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.000105>
10:15:21.066182 read(13, "*1\r\n$5\r\nMULTI\r\n*4\r\n$4\r\nLREM\r\n
$7\r"..., 1024) = 107 <0.000105>
10:15:21.072175 write(7, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.000138>
10:15:21.075149 write(11, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.000102>
10:15:21.084490 write(6, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.000107>
10:15:21.152902 write(15, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.000160>
10:15:21.154809 epoll_ctl(3, EPOLL_CTL_MOD, 5, {EPOLLIN|EPOLLOUT,
{u32=5, u64=5}}) = 0 <0.000104>
10:15:21.160443 write(11, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.000134>
10:15:21.170793 write(19, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.000113>
10:15:21.176113 write(15, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.000122>
10:15:21.182217 read(10, "*1\r\n$5\r\nMULTI\r\n*4\r\n$4\r\nLREM\r\n
$7\r"..., 1024) = 107 <0.000296>
10:15:21.195841 write(16, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.000101>
10:15:21.197473 read(15, "*1\r\n$5\r\nMULTI\r\n*4\r\n$4\r\nLREM\r\n
$7\r"..., 1024) = 107 <0.000110>
10:15:21.199504 write(6, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.000125>
10:15:21.202458 write(16, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.000207>
10:15:21.241046 read(5, "*1\r\n$5\r\nMULTI\r\n*4\r\n$4\r\nLREM\r\n
$7\r"..., 1024) = 107 <0.000130>
10:15:21.248711 write(8, "+OK\r\n+QUEUED\r\n+QUEUED\r\n*2\r\n:0\r
\n:"..., 35) = 35 <0.000132>
10:15:21.249517 read(6, "*1\r\n$5\r\nMULTI\r\n*4\r\n$4\r\nLREM\r\n
$7\r"..., 1024) = 107 <0.000136>
10:15:21.252410 read(18, "*1\r\n$5\r\nMULTI\r\n*4\r\n$4\r\nLREM\r\n
$7\r"..., 1024) = 107 <0.000123>
On Aug 22, 8:55 am, Pieter Noordhuis <
pcnoordh...@gmail.com> wrote:
> And be sure to concatenate that command on a single line if it gets wrapped :-)
>
> Cheers,
> Pieter
>
>
>
>
>
>
>
> On Mon, Aug 22, 2011 at 5:54 PM, Pieter Noordhuis <
pcnoordh...@gmail.com> wrote:
> > Hi Dean,
>
> > The percentages USR and SYS you mention belong to the Redis process
> > alone, correct? Such a big skew should be observable by means of
> > strace. The following one-liner prints system calls taking more than
> > 0.1ms. It doesn't show epoll_wait calls because its time is of no use.
>
> > $ sudo strace -T -tt -e 'trace=!epoll_wait' -p $(pgrep redis-server)
> > 2>&1 | ruby -e "while line = STDIN.gets; puts line if
> > line[/<(\d+\.\d+)>/, 1].to_f > 0.000100; end"
>
> > Note that you'll have some outliers here and there, but given the
> > amount of kernel time of the Redis process this snippet should have
> > different output (bigger outliers, higher average) when the Jedis
> > clients connect as opposed to the (normal) redis-benchmark test.
>
> > Cheers,
> > Pieter
>