4

The Case of the 50ms request

 3 years ago
source link: https://mysteries.wizardzines.com/50ms-request.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

The Case of the 50ms request<<init>>

<p> Hello! This is a mystery where your goal is to solve a debugging problem! You'll collect clues, interpret evidence, and ultimately solve the Case of the 50ms Request! </p>

<p> In the sidebar, you'll notice a "What you know" list. As you collect more clues, the list will update with what you've learned. </p>

<p> Click "Start" to get started. </p>

<div class="nav"> [[Start->Landing]] </div>You have a program that uploads very tiny files to a server. You notice in your monitoring that these file uploads are a little slow -- maybe about 50ms on average.

<div class="nav"> [[Reproduce the problem -> Reproduce]] </div><p> The uploading code is in Javascript, so you write a tiny Javascript program called <code>slow.js</code> to reproduce the problem so you can easily investigate it. The program prints out the time elapsed for the request in milliseconds. </p>

<p> You have a choice: you can SSH to the client machine (which is making the requests), or the server machine (which is serving the requests). </p>

<div class="nav"> [[Look at the slow.js code -> Code]] [[SSH to the client -> Client]] [[SSH to the server -> Server]] [[Make a guess at why this is happening->diagnosis]] </div><p> Here's a little Javascript program that reproduces the problem. It's called <code>slow.js</code>. After the request finishes, it prints out the time elapsed in milliseconds. </p>

<pre> const http = require('http') <br> const fs = require('fs').promises <br> <br> var start; <br> <br> async function uploadFile(filename) { <br> const req = http.request({ hostname: 'mysterybox.local', port: 8000, method: 'POST'}, res => { <br> console.log("Time elapsed:", new Date() - start, "milliseconds"); <br> }) <br> const stats = await fs.stat(filename) <br> start = new Date(); <br> req.setHeader('Content-Type', 'text/plain'); <br> req.setHeader('Content-Length', stats.size); <br> req.flushHeaders(); <br> const data = await fs.readFile(filename, 'utf8'); <br> await new Promise(resolve => {req.write(data, resolve)}); <br> } <br> <br> uploadFile("test.txt") <br> </pre>

<div class="nav go-back"> [[Go back -> Reproduce]] </div><p> You SSH to the client machine that's making the slow requests to do some more investigation. You copy over the <code>slow.js</code> script you wrote so that you can reproduce it easily. </p>

<div class="nav"> [[Run slow.js -> Run slow.js]] [[Use curl -> curl]] [[Use ping -> ping]] [[Use strace -> strace]] [[Use tcpdump -> tcpdump]] [[Use termshark -> termshark]] [[Go back -> Reproduce]] </div><p> You write a quick for loop to run the <code>slow.js</code> script 20 times. </p>

<pre> $ for i in `seq 1 20`; do node slow.js; done <br> Time elapsed: 51 milliseconds <br> Time elapsed: 51 milliseconds <br> Time elapsed: 50 milliseconds <br> Time elapsed: 51 milliseconds <br> Time elapsed: 50 milliseconds <br> Time elapsed: 50 milliseconds <br> Time elapsed: 54 milliseconds <br> Time elapsed: 53 milliseconds <br> Time elapsed: 53 milliseconds <br> Time elapsed: 49 milliseconds <br> Time elapsed: 52 milliseconds <br> Time elapsed: 54 milliseconds <br> Time elapsed: 53 milliseconds <br> Time elapsed: 50 milliseconds <br> Time elapsed: 50 milliseconds <br> Time elapsed: 49 milliseconds <br> Time elapsed: 51 milliseconds <br> Time elapsed: 50 milliseconds <br> Time elapsed: 49 milliseconds <br> Time elapsed: 50 milliseconds </pre>

<<newinfo "The HTTP request takes about 50ms on average.">>

<div class="nav"> [[Go back -> Client]] </div><p> You decide to use curl to make the same POST request that <code>slow.js</code> is making, to see if you get a different result. </p>

<<ask "What command line arguments do you need to pass to curl to make a POST request?" "$curl_cmd" "curl 2">><<you-said "The curl command you want to run:" $curl_cmd>>

<p> This game only knows one option, so you make a POST request with: </p>

<pre> $ time curl -d 'buy some milk' http://mysterybox:8000 <br> a <br> real 0m0.018s <br> user 0m0.007s <br> sys 0m0.010s </pre>

<p> What do you think this means? Did using curl give us a different result? </p>

<div class="yesno"> [[Yes->curl 3]] [[No->curl 3]] </div><p> The curl process took 18ms to run, which is faster than 50ms! The total time to make the request was less than that, because there's some overhead to starting the curl process. </p> <<newinfo "curl is much faster: it takes less than 18ms to make the request">>

<div class="nav"> [[Go back -> Client]] </div>You ping the server to see how far away it is.

<pre> $ ping mysterybox PING mysterybox (1.2.3.4) 56(84) bytes of data. <br> 64 bytes from mysterybox (1.2.3.4): icmp_seq=1 ttl=62 time=0.956 ms <br> 64 bytes from mysterybox (1.2.3.4): icmp_seq=2 ttl=62 time=0.610 ms <br> 64 bytes from mysterybox (1.2.3.4): icmp_seq=3 ttl=62 time=0.540 ms <br> 64 bytes from mysterybox (1.2.3.4): icmp_seq=4 ttl=62 time=0.634 ms <br> 64 bytes from mysterybox (1.2.3.4): icmp_seq=5 ttl=62 time=0.536 ms <br> 64 bytes from mysterybox (1.2.3.4): icmp_seq=6 ttl=62 time=0.426 ms <br> 64 bytes from mysterybox (1.2.3.4): icmp_seq=7 ttl=62 time=0.583 ms </pre>

What do you think? Is the request slow because the server is too far away?

<div class="yesno"> [[Yes->ping 2]] [[No->ping 2]] </div><p> On average the ping time is only 0.5ms and the requests we're seeing are 40ms, so that's probably not the issue. The client and the server machines are both in the same datacenter. </p>

<<newinfo "The server is only 0.5ms away">> <div class="nav"> [[Go back -> Client]] </div><p> You know that the <code>-t</code> flag will show you the timestamp for every system call, so you <code>strace -t</code> the slow program. </p>

<p> Your goal here is to identify the system requests where it's making the HTTP request and getting the response. It's a POST request </p>

<pre> $ strace -tt node slow.js <br> 13:43:25.428436 execve("/usr/bin/node", ["node", "slow.js"], 0x7ffd97b262a0 /* 24 vars */) = 0 <br> 13:43:25.428859 brk(NULL) = 0x52d4000 <br> 13:43:25.428919 arch_prctl(0x3001 /* ARCH_??? */, 0x7ffebd9f3d50) = -1 EINVAL (Invalid argument) <br> 13:43:25.429039 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) <br> 13:43:25.429138 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 <br> 13:43:25.429247 fstat(3, {st_mode=S_IFREG|0644, st_size=27066, ...}) = 0 <br> 13:43:25.429293 mmap(NULL, 27066, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f1c832c1000 <br> 13:43:25.429333 close(3) = 0 <br> 13:43:25.429373 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3 <br> 13:43:25.429417 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \22\0\0\0\0\0\0"..., 832) = 832 <br> 13:43:25.429470 fstat(3, {st_mode=S_IFREG|0644, st_size=18816, ...}) = 0 <br> 13:43:25.429527 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f1c832bf000 <br> 13:43:25.429590 mmap(NULL, 20752, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f1c832b9000 <br> 13:43:25.429647 mmap(0x7f1c832ba000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7f1c832ba000 <br> 13:43:25.429709 mmap(0x7f1c832bc000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f1c832bc000 <br> 13:43:25.429748 mmap(0x7f1c832bd000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f1c832bd000 <br> 13:43:25.429836 close(3) = 0 <br> 13:43:25.429887 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 3 <br> 13:43:25.429945 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\341\t\0\0\0\0\0"..., 832) = 832 <br> 13:43:25.429984 fstat(3, {st_mode=S_IFREG|0644, st_size=1952928, ...}) = 0 <br> 13:43:25.430034 mmap(NULL, 1968128, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f1c830d8000 <br> 13:43:25.430092 mprotect(0x7f1c8316e000, 1286144, PROT_NONE) = 0 <br> 13:43:25.430152 mmap(0x7f1c8316e000, 983040, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x96000) = 0x7f1c8316e000 <br> 13:43:25.430209 mmap(0x7f1c8325e000, 299008, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x186000) = 0x7f1c8325e000 <br> 13:43:25.430247 mmap(0x7f1c832a8000, 57344, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1cf000) = 0x7f1c832a8000 <br> 13:43:25.430294 mmap(0x7f1c832b6000, 10240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f1c832b6000 <br> 13:43:25.430345 close(3) = 0 <br> 13:43:25.430392 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3 <br> 13:43:25.430441 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\363\0\0\0\0\0\0"..., 832) = 832 <br> 13:43:25.430480 fstat(3, {st_mode=S_IFREG|0644, st_size=1369352, ...}) = 0 <br> 13:43:25.430518 mmap(NULL, 1368336, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f1c82f89000 <br> 13:43:25.430555 mmap(0x7f1c82f98000, 684032, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xf000) = 0x7f1c82f98000 <br> 13:43:25.430605 mmap(0x7f1c8303f000, 618496, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb6000) = 0x7f1c8303f000 <br> 13:43:25.430686 mmap(0x7f1c830d6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14c000) = 0x7f1c830d6000 <br> 13:43:25.430781 close(3) = 0 <br> 13:43:25.430854 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3 <br> 13:43:25.430915 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\3405\0\0\0\0\0\0"..., 832) = 832 <br> 13:43:25.430960 fstat(3, {st_mode=S_IFREG|0644, st_size=104984, ...}) = 0 <br> 13:43:25.431017 mmap(NULL, 107592, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f1c82f6e000 <br> 13:43:25.431061 mmap(0x7f1c82f71000, 73728, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f1c82f71000 <br> 13:43:25.431103 mmap(0x7f1c82f83000, 16384, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x7f1c82f83000 <br> 13:43:25.431139 mmap(0x7f1c82f87000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18000) = 0x7f1c82f87000 <br> 13:43:25.431193 close(3) = 0 <br> 13:43:25.431245 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3 <br> 13:43:25.431299 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\201\0\0\0\0\0\0"..., 832) = 832 <br> 13:43:25.431427 pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\345Ga\367\265T\320\374\301V)Yf]\223\337"..., 68, 824) = 68 <br> 13:43:25.431477 fstat(3, {st_mode=S_IFREG|0755, st_size=157224, ...}) = 0 <br> 13:43:25.431516 pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\345Ga\367\265T\320\374\301V)Yf]\223\337"..., 68, 824) = 68 <br> 13:43:25.431553 mmap(NULL, 140408, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f1c82f4b000 <br> 13:43:25.431591 mmap(0x7f1c82f52000, 69632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7f1c82f52000 <br> 13:43:25.431634 mmap(0x7f1c82f63000, 20480, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18000) = 0x7f1c82f63000 <br> 13:43:25.431671 mmap(0x7f1c82f68000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1c000) = 0x7f1c82f68000 <br> 13:43:25.431717 mmap(0x7f1c82f6a000, 13432, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f1c82f6a000 <br> 13:43:25.431768 close(3) = 0 <br> 13:43:25.431809 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 <br> 13:43:25.431857 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360q\2\0\0\0\0\0"..., 832) = 832 <br> 13:43:25.431895 pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784 <br> 13:43:25.431930 pread64(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32, 848) = 32 <br> 13:43:25.431965 pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\t\233\222%\274\260\320\31\331\326\10\204\276X>\263"..., 68, 880) = 68 <br> 13:43:25.432001 fstat(3, {st_mode=S_IFREG|0755, st_size=2029224, ...}) = 0 <br> 13:43:25.432038 pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784 <br> 13:43:25.432074 pread64(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32, 848) = 32 <br> 13:43:25.432109 pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\t\233\222%\274\260\320\31\331\326\10\204\276X>\263"..., 68, 880) = 68 <br> 13:43:25.432167 mmap(NULL, 2036952, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f1c82d59000 <br> 13:43:25.432239 mprotect(0x7f1c82d7e000, 1847296, PROT_NONE) = 0 <br> 13:43:25.432315 mmap(0x7f1c82d7e000, 1540096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25000) = 0x7f1c82d7e000 <br> 13:43:25.432512 mmap(0x7f1c82ef6000, 303104, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19d000) = 0x7f1c82ef6000 <br> 13:43:25.432578 mmap(0x7f1c82f41000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e7000) = 0x7f1c82f41000 <br> 13:43:25.432628 mmap(0x7f1c82f47000, 13528, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f1c82f47000 <br> 13:43:25.432716 close(3) = 0 <br> 13:43:25.432796 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f1c82d57000 <br> 13:43:25.432856 mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f1c82d54000 <br> 13:43:25.432900 arch_prctl(ARCH_SET_FS, 0x7f1c82d54780) = 0 <br> 13:43:25.433123 mprotect(0x7f1c82f41000, 12288, PROT_READ) = 0 <br> 13:43:25.433190 mprotect(0x7f1c82f68000, 4096, PROT_READ) = 0 <br> 13:43:25.433244 mprotect(0x7f1c82f87000, 4096, PROT_READ) = 0 <br> 13:43:25.433320 mprotect(0x7f1c830d6000, 4096, PROT_READ) = 0 <br> 13:43:25.434235 mprotect(0x7f1c832a8000, 45056, PROT_READ) = 0 <br> 13:43:25.434307 mprotect(0x7f1c832bd000, 4096, PROT_READ) = 0 <br> 13:43:25.434825 mprotect(0x4586000, 12288, PROT_READ) = 0 <br> 13:43:25.434887 mprotect(0x7f1c832f5000, 4096, PROT_READ) = 0 <br> 13:43:25.434935 munmap(0x7f1c832c1000, 27066) = 0 <br> 13:43:25.435017 set_tid_address(0x7f1c82d54a50) = 106154 <br> 13:43:25.435073 set_robust_list(0x7f1c82d54a60, 24) = 0 <br> 13:43:25.435123 rt_sigaction(SIGRTMIN, {sa_handler=0x7f1c82f52bf0, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.435198 rt_sigaction(SIGRT_1, {sa_handler=0x7f1c82f52c90, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.435270 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 <br> 13:43:25.435339 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 <br> 13:43:25.435579 brk(NULL) = 0x52d4000 <br> 13:43:25.435629 brk(0x52f5000) = 0x52f5000 <br> 13:43:25.435772 futex(0x7f1c832b66bc, FUTEX_WAKE_PRIVATE, 2147483647) = 0 <br> 13:43:25.435884 futex(0x7f1c832b66c8, FUTEX_WAKE_PRIVATE, 2147483647) = 0 <br> 13:43:25.436358 brk(0x5316000) = 0x5316000 <br> 13:43:25.436589 futex(0x45a83d0, FUTEX_WAKE_PRIVATE, 2147483647) = 0 <br> 13:43:25.436800 getuid() = 0 <br> 13:43:25.436849 geteuid() = 0 <br> 13:43:25.436905 getgid() = 0 <br> 13:43:25.436950 getegid() = 0 <br> 13:43:25.436998 rt_sigprocmask(SIG_SETMASK, [USR1], NULL, 8) = 0 <br> 13:43:25.437065 fstat(0, {st_mode=S_IFCHR|0600, st_rdev=makedev(0x88, 0), ...}) = 0 <br> 13:43:25.437111 fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(0x88, 0), ...}) = 0 <br> 13:43:25.437147 fstat(2, {st_mode=S_IFCHR|0600, st_rdev=makedev(0x88, 0), ...}) = 0 <br> 13:43:25.437182 rt_sigaction(SIGHUP, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437220 rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437255 rt_sigaction(SIGQUIT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437289 rt_sigaction(SIGILL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437323 rt_sigaction(SIGTRAP, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437357 rt_sigaction(SIGABRT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437391 rt_sigaction(SIGBUS, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437424 rt_sigaction(SIGFPE, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437458 rt_sigaction(SIGUSR1, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437492 rt_sigaction(SIGSEGV, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437525 rt_sigaction(SIGUSR2, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437559 rt_sigaction(SIGPIPE, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437593 rt_sigaction(SIGALRM, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437627 rt_sigaction(SIGTERM, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437661 rt_sigaction(SIGSTKFLT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437695 rt_sigaction(SIGCHLD, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437729 rt_sigaction(SIGCONT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437762 rt_sigaction(SIGTSTP, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437803 rt_sigaction(SIGTTIN, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437872 rt_sigaction(SIGTTOU, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437912 rt_sigaction(SIGURG, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437947 rt_sigaction(SIGXCPU, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.437981 rt_sigaction(SIGXFSZ, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.438026 rt_sigaction(SIGVTALRM, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.438062 rt_sigaction(SIGPROF, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.438095 rt_sigaction(SIGWINCH, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.438129 rt_sigaction(SIGIO, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.438163 rt_sigaction(SIGPWR, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.438196 rt_sigaction(SIGSYS, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.438235 fcntl(0, F_GETFL) = 0x2 (flags O_RDWR) <br> 13:43:25.438271 ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.438316 ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.438352 fcntl(1, F_GETFL) = 0x2 (flags O_RDWR) <br> 13:43:25.438383 ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.438418 ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.438453 fcntl(2, F_GETFL) = 0x2 (flags O_RDWR) <br> 13:43:25.438484 ioctl(2, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.438518 ioctl(2, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.438553 rt_sigaction(SIGINT, {sa_handler=0xa4dfb0, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_RESETHAND, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.438590 rt_sigaction(SIGTERM, {sa_handler=0xa4dfb0, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_RESETHAND, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.438625 rt_sigaction(SIGSEGV, {sa_handler=0xa4dfd0, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.438732 prlimit64(0, RLIMIT_NOFILE, NULL, {rlim_cur=1024, rlim_max=1024*1024}) = 0 <br> 13:43:25.438803 prlimit64(0, RLIMIT_NOFILE, {rlim_cur=1024*1024, rlim_max=1024*1024}, NULL) = 0 <br> 13:43:25.438988 ioctl(0, FIOCLEX) = 0 <br> 13:43:25.439067 ioctl(1, FIOCLEX) = 0 <br> 13:43:25.439132 ioctl(2, FIOCLEX) = 0 <br> 13:43:25.439167 ioctl(3, FIOCLEX) = -1 EBADF (Bad file descriptor) <br> 13:43:25.439205 ioctl(4, FIOCLEX) = -1 EBADF (Bad file descriptor) <br> 13:43:25.439237 ioctl(5, FIOCLEX) = -1 EBADF (Bad file descriptor) <br> 13:43:25.439268 ioctl(6, FIOCLEX) = -1 EBADF (Bad file descriptor) <br> 13:43:25.439299 ioctl(7, FIOCLEX) = -1 EBADF (Bad file descriptor) <br> 13:43:25.439330 ioctl(8, FIOCLEX) = -1 EBADF (Bad file descriptor) <br> 13:43:25.439412 ioctl(9, FIOCLEX) = -1 EBADF (Bad file descriptor) <br> 13:43:25.439454 ioctl(10, FIOCLEX) = -1 EBADF (Bad file descriptor) <br> 13:43:25.439485 ioctl(11, FIOCLEX) = -1 EBADF (Bad file descriptor) <br> 13:43:25.439516 ioctl(12, FIOCLEX) = -1 EBADF (Bad file descriptor) <br> 13:43:25.439547 ioctl(13, FIOCLEX) = -1 EBADF (Bad file descriptor) <br> 13:43:25.439578 ioctl(14, FIOCLEX) = -1 EBADF (Bad file descriptor) <br> 13:43:25.439608 ioctl(15, FIOCLEX) = -1 EBADF (Bad file descriptor) <br> 13:43:25.439639 ioctl(16, FIOCLEX) = -1 EBADF (Bad file descriptor) <br> 13:43:25.439673 getuid() = 0 <br> 13:43:25.439703 geteuid() = 0 <br> 13:43:25.439732 getgid() = 0 <br> 13:43:25.439769 getegid() = 0 <br> 13:43:25.439803 getuid() = 0 <br> 13:43:25.439835 geteuid() = 0 <br> 13:43:25.439864 getgid() = 0 <br> 13:43:25.439893 getegid() = 0 <br> 13:43:25.439922 getuid() = 0 <br> 13:43:25.439960 geteuid() = 0 <br> 13:43:25.440018 getgid() = 0 <br> 13:43:25.440073 getegid() = 0 <br> 13:43:25.440112 getuid() = 0 <br> 13:43:25.440143 geteuid() = 0 <br> 13:43:25.440172 getgid() = 0 <br> 13:43:25.440200 getegid() = 0 <br> 13:43:25.440230 getuid() = 0 <br> 13:43:25.440259 geteuid() = 0 <br> 13:43:25.440288 getgid() = 0 <br> 13:43:25.440328 getegid() = 0 <br> 13:43:25.440415 getuid() = 0 <br> 13:43:25.440460 geteuid() = 0 <br> 13:43:25.440500 getgid() = 0 <br> 13:43:25.440530 getegid() = 0 <br> 13:43:25.440600 futex(0x45af060, FUTEX_WAKE_PRIVATE, 2147483647) = 0 <br> 13:43:25.440874 getuid() = 0 <br> 13:43:25.440917 geteuid() = 0 <br> 13:43:25.440947 getgid() = 0 <br> 13:43:25.440976 getegid() = 0 <br> 13:43:25.441039 epoll_create1(EPOLL_CLOEXEC) = 3 <br> 13:43:25.441084 pipe2([4, 5], O_CLOEXEC) = 0 <br> 13:43:25.441133 write(5, "*", 1) = 1 <br> 13:43:25.441173 futex(0x45a83c8, FUTEX_WAKE_PRIVATE, 2147483647) = 0 <br> 13:43:25.441205 pipe2([6, 7], O_NONBLOCK|O_CLOEXEC) = 0 <br> 13:43:25.441252 eventfd2(0, EFD_CLOEXEC|EFD_NONBLOCK) = 8 <br> 13:43:25.441299 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 <br> 13:43:25.441345 mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f1c82553000 <br> 13:43:25.441388 mprotect(0x7f1c82554000, 8388608, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.441445 clone(child_stack=0x7f1c82d52f70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tid=[106155], tls=0x7f1c82d53700, child_tidptr=0x7f1c82d539d0) = 106155 <br> 13:43:25.441533 futex(0x53144b0, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY) = 0 <br> 13:43:25.441629 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 <br> 13:43:25.441670 mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f1c81d52000 <br> 13:43:25.441717 mprotect(0x7f1c81d53000, 8388608, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.441817 clone(child_stack=0x7f1c82551f70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tid=[106156], tls=0x7f1c82552700, child_tidptr=0x7f1c825529d0) = 106156 <br> 13:43:25.441920 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 <br> 13:43:25.441985 mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f1c81551000 <br> 13:43:25.442055 mprotect(0x7f1c81552000, 8388608, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.442119 clone(child_stack=0x7f1c81d50f70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tid=[106157], tls=0x7f1c81d51700, child_tidptr=0x7f1c81d519d0) = 106157 <br> 13:43:25.442188 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 <br> 13:43:25.442227 mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f1c80d50000 <br> 13:43:25.442263 mprotect(0x7f1c80d51000, 8388608, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.442307 clone(child_stack=0x7f1c8154ff70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tid=[106158], tls=0x7f1c81550700, child_tidptr=0x7f1c815509d0) = 106158 <br> 13:43:25.442373 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 <br> 13:43:25.442411 mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f1c8054f000 <br> 13:43:25.442445 mprotect(0x7f1c80550000, 8388608, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.442491 clone(child_stack=0x7f1c80d4ef70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tid=[106159], tls=0x7f1c80d4f700, child_tidptr=0x7f1c80d4f9d0) = 106159 <br> 13:43:25.442551 futex(0x7ffebd9f3a58, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 <br> 13:43:25.442616 futex(0x7ffebd9f3a00, FUTEX_WAIT_PRIVATE, 2, NULL) = 0 <br> 13:43:25.442722 futex(0x7ffebd9f3a00, FUTEX_WAKE_PRIVATE, 1) = 0 <br> 13:43:25.442757 futex(0x7ffebd9f3a5c, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 <br> 13:43:25.442799 futex(0x7ffebd9f3a00, FUTEX_WAIT_PRIVATE, 2, NULL) = 0 <br> 13:43:25.442834 futex(0x7ffebd9f3a00, FUTEX_WAKE_PRIVATE, 1) = 0 <br> 13:43:25.442863 futex(0x7ffebd9f3a58, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 <br> 13:43:25.442913 futex(0x7ffebd9f3a00, FUTEX_WAIT_PRIVATE, 2, NULL) = 0 <br> 13:43:25.442948 futex(0x7ffebd9f3a00, FUTEX_WAKE_PRIVATE, 1) = 0 <br> 13:43:25.442978 futex(0x7ffebd9f3a5c, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 <br> 13:43:25.443016 futex(0x7ffebd9f3a00, FUTEX_WAIT_PRIVATE, 2, NULL) = 0 <br> 13:43:25.443098 futex(0x7ffebd9f3a00, FUTEX_WAKE_PRIVATE, 1) = 0 <br> 13:43:25.443293 brk(0x5337000) = 0x5337000 <br> 13:43:25.443593 epoll_create1(EPOLL_CLOEXEC) = 13 <br> 13:43:25.443645 pipe2([14, 15], O_NONBLOCK|O_CLOEXEC) = 0 <br> 13:43:25.443693 eventfd2(0, EFD_CLOEXEC|EFD_NONBLOCK) = 16 <br> 13:43:25.443827 brk(0x5358000) = 0x5358000 <br> 13:43:25.443947 openat(AT_FDCWD, "/sys/fs/cgroup/memory/memory.limit_in_bytes", O_RDONLY|O_CLOEXEC) = 17 <br> 13:43:25.444011 read(17, "9223372036854771712\n", 31) = 20 <br> 13:43:25.444056 close(17) = 0 <br> 13:43:25.444102 openat(AT_FDCWD, "/proc/meminfo", O_RDONLY|O_CLOEXEC) = 17 <br> 13:43:25.444162 read(17, "MemTotal: 1004892 kB\nMemF"..., 4095) = 1447 <br> 13:43:25.444216 close(17) = 0 <br> 13:43:25.444593 mmap(NULL, 1269760, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f1c80419000 <br> 13:43:25.452826 brk(0x5379000) = 0x5379000 <br> 13:43:25.453035 brk(0x53a1000) = 0x53a1000 <br> 13:43:25.453210 getpid() = 106154 <br> 13:43:25.453322 futex(0x45ab448, FUTEX_WAKE_PRIVATE, 2147483647) = 0 <br> 13:43:25.453372 futex(0x45ab308, FUTEX_WAKE_PRIVATE, 2147483647) = 0 <br> 13:43:25.453406 futex(0x45ab2fc, FUTEX_WAKE_PRIVATE, 2147483647) = 0 <br> 13:43:25.453436 futex(0x45ab2f4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 <br> 13:43:25.453467 getpid() = 106154 <br> 13:43:25.453521 getrandom("\x0f\x19\xe8\x2c\xc1\x47\xfd\x9b\xcc\xb5\x44\xfa\xe4\x71\xf9\x97\xe2\xfa\x9a\x5f\x99\x31\x95\xc3\xee\x94\xd1\xbd\xdc\xd4\xef\x54", 32, 0) = 32 <br> 13:43:25.453572 getpid() = 106154 <br> 13:43:25.453609 futex(0x45ab418, FUTEX_WAKE_PRIVATE, 2147483647) = 0 <br> 13:43:25.453647 getpid() = 106154 <br> 13:43:25.453680 getpid() = 106154 <br> 13:43:25.453717 getpid() = 106154 <br> 13:43:25.453747 getpid() = 106154 <br> 13:43:25.453791 mmap(0x143ab233b000, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x143ab233b000 <br> 13:43:25.453928 brk(0x53c2000) = 0x53c2000 <br> 13:43:25.454030 mmap(0x122891b40000, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x122891b40000 <br> 13:43:25.454070 munmap(0x122891b80000, 258048) = 0 <br> 13:43:25.454108 mprotect(0x122891b40000, 262144, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.454492 getpid() = 106154 <br> 13:43:25.454530 getpid() = 106154 <br> 13:43:25.454613 munmap(0x122891b68000, 98304) = 0 <br> 13:43:25.454657 mprotect(0x122891b40000, 163840, PROT_READ) = 0 <br> 13:43:25.454740 mmap(0x128c1d200000, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x128c1d200000 <br> 13:43:25.454799 munmap(0x128c1d240000, 258048) = 0 <br> 13:43:25.454875 mprotect(0x128c1d200000, 262144, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.454965 mmap(0xdb6ece00000, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0xdb6ece00000 <br> 13:43:25.455024 munmap(0xdb6ece40000, 258048) = 0 <br> 13:43:25.455063 mprotect(0xdb6ece00000, 262144, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.455113 mmap(0x31c8a35c0000, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x31c8a35c0000 <br> 13:43:25.455150 munmap(0x31c8a3600000, 258048) = 0 <br> 13:43:25.455183 mprotect(0x31c8a35c0000, 262144, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.455253 mmap(0x2047fb9c0000, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x2047fb9c0000 <br> 13:43:25.455333 munmap(0x2047fba00000, 258048) = 0 <br> 13:43:25.455410 mprotect(0x2047fb9c0000, 262144, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.455499 getpid() = 106154 <br> 13:43:25.455536 getpid() = 106154 <br> 13:43:25.455629 mmap(0x73f40340000, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x73f40340000 <br> 13:43:25.455672 munmap(0x73f40380000, 258048) = 0 <br> 13:43:25.455707 mprotect(0x73f40340000, 262144, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.455837 mmap(0x1b89e9140000, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x1b89e9140000 <br> 13:43:25.455875 munmap(0x1b89e9180000, 258048) = 0 <br> 13:43:25.455909 mprotect(0x1b89e9140000, 262144, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.456048 mmap(0x281e95b80000, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x281e95b80000 <br> 13:43:25.456086 munmap(0x281e95bc0000, 258048) = 0 <br> 13:43:25.456120 mprotect(0x281e95b80000, 262144, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.456245 mmap(0x1ee9fc840000, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x1ee9fc840000 <br> 13:43:25.456500 munmap(0x1ee9fc880000, 258048) = 0 <br> 13:43:25.456584 mprotect(0x1ee9fc840000, 262144, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.456762 mmap(0x3be87a680000, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x3be87a680000 <br> 13:43:25.456822 munmap(0x3be87a6c0000, 258048) = 0 <br> 13:43:25.456876 mprotect(0x3be87a680000, 262144, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.457174 mmap(0x73e0700000, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x73e0700000 <br> 13:43:25.457246 munmap(0x73e0740000, 258048) = 0 <br> 13:43:25.457310 mprotect(0x73e0700000, 262144, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.457466 mprotect(0x143ab2340000, 262144, PROT_NONE) = 0 <br> 13:43:25.457537 madvise(0x143ab2340000, 262144, MADV_DONTNEED) = 0 <br> 13:43:25.457581 mprotect(0x143ab2340000, 8192, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.457643 mprotect(0x143ab2342000, 4096, PROT_NONE) = 0 <br> 13:43:25.457678 madvise(0x143ab2342000, 4096, MADV_DONTNEED) = 0 <br> 13:43:25.457709 mprotect(0x143ab2343000, 245760, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.457743 mprotect(0x143ab237f000, 4096, PROT_NONE) = 0 <br> 13:43:25.457773 madvise(0x143ab237f000, 4096, MADV_DONTNEED) = 0 <br> 13:43:25.457892 mmap(0x2d9c12500000, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x2d9c12500000 <br> 13:43:25.457933 munmap(0x2d9c12540000, 258048) = 0 <br> 13:43:25.457968 mprotect(0x2d9c12500000, 262144, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.459937 brk(0x53e3000) = 0x53e3000 <br> 13:43:25.460946 brk(0x5405000) = 0x5405000 <br> 13:43:25.463313 munmap(0x73e0713000, 184320) = 0 <br> 13:43:25.463471 mprotect(0x143ab2358000, 4096, PROT_NONE) = 0 <br> 13:43:25.463552 madvise(0x143ab2358000, 4096, MADV_DONTNEED) = 0 <br> 13:43:25.463609 mprotect(0x143ab2359000, 159744, PROT_NONE) = 0 <br> 13:43:25.463662 madvise(0x143ab2359000, 159744, MADV_DONTNEED) = 0 <br> 13:43:25.463715 munmap(0x2d9c12502000, 253952) = 0 <br> 13:43:25.463775 mprotect(0x143ab2343000, 86016, PROT_READ|PROT_EXEC) = 0 <br> 13:43:25.463939 munmap(0x7f1c80419000, 1269760) = 0 <br> 13:43:25.464228 readlink("/proc/self/exe", "/usr/bin/node", 8191) = 13 <br> 13:43:25.464389 getuid() = 0 <br> 13:43:25.464447 geteuid() = 0 <br> 13:43:25.464495 getgid() = 0 <br> 13:43:25.464542 getegid() = 0 <br> 13:43:25.464616 futex(0x459c348, FUTEX_WAKE_PRIVATE, 2147483647) = 0 <br> 13:43:25.464701 mmap(0x17589f780000, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x17589f780000 <br> 13:43:25.464780 munmap(0x17589f7c0000, 258048) = 0 <br> 13:43:25.464852 mprotect(0x17589f780000, 262144, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.464979 brk(0x5462000) = 0x5462000 <br> 13:43:25.467093 mmap(0x2df2b0dc0000, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x2df2b0dc0000 <br> 13:43:25.467229 munmap(0x2df2b0e00000, 258048) = 0 <br> 13:43:25.467293 mprotect(0x2df2b0dc0000, 262144, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.467510 mmap(0x39ced1100000, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x39ced1100000 <br> 13:43:25.467580 munmap(0x39ced1140000, 258048) = 0 <br> 13:43:25.467645 mprotect(0x39ced1100000, 262144, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.467947 mmap(0x22642200000, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x22642200000 <br> 13:43:25.468003 munmap(0x22642240000, 258048) = 0 <br> 13:43:25.468041 mprotect(0x22642200000, 262144, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.472392 getpid() = 106154 <br> 13:43:25.472495 futex(0x45a8488, FUTEX_WAKE_PRIVATE, 2147483647) = 0 <br> 13:43:25.472585 rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [USR1], 8) = 0 <br> 13:43:25.472673 mmap(NULL, 36864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f1c80546000 <br> 13:43:25.472742 mprotect(0x7f1c80547000, 32768, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.472852 clone(child_stack=0x7f1c8054df70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tid=[106160], tls=0x7f1c8054e700, child_tidptr=0x7f1c8054e9d0) = 106160 <br> 13:43:25.472972 rt_sigprocmask(SIG_SETMASK, [USR1], NULL, 8) = 0 <br> 13:43:25.473046 rt_sigaction(SIGUSR1, {sa_handler=0xb8b6a0, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.473123 rt_sigprocmask(SIG_UNBLOCK, [USR1], NULL, 8) = 0 <br> 13:43:25.476209 getpid() = 106154 <br> 13:43:25.476722 getcwd("/root/code/40ms", 4096) = 16 <br> 13:43:25.481023 mmap(0x3c877ed80000, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x3c877ed80000 <br> 13:43:25.481120 munmap(0x3c877edc0000, 258048) = 0 <br> 13:43:25.481165 mprotect(0x3c877ed80000, 262144, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.486878 getuid() = 0 <br> 13:43:25.486975 geteuid() = 0 <br> 13:43:25.487050 getgid() = 0 <br> 13:43:25.487085 getegid() = 0 <br> 13:43:25.487132 getuid() = 0 <br> 13:43:25.487164 geteuid() = 0 <br> 13:43:25.487193 getgid() = 0 <br> 13:43:25.487222 getegid() = 0 <br> 13:43:25.488557 statx(AT_FDCWD, "/root/code/40ms/slow.js", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_ALL, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=618, ...}) = 0 <br> 13:43:25.489956 statx(AT_FDCWD, "/root", AT_STATX_SYNC_AS_STAT|AT_SYMLINK_NOFOLLOW, STATX_ALL, {stx_mask=STATX_ALL, stx_attributes=0, stx_mode=S_IFDIR|0700, stx_size=4096, ...}) = 0 <br> 13:43:25.490180 statx(AT_FDCWD, "/root/code", AT_STATX_SYNC_AS_STAT|AT_SYMLINK_NOFOLLOW, STATX_ALL, {stx_mask=STATX_ALL, stx_attributes=0, stx_mode=S_IFDIR|0755, stx_size=4096, ...}) = 0 <br> 13:43:25.490272 statx(AT_FDCWD, "/root/code/40ms", AT_STATX_SYNC_AS_STAT|AT_SYMLINK_NOFOLLOW, STATX_ALL, {stx_mask=STATX_ALL, stx_attributes=0, stx_mode=S_IFDIR|0755, stx_size=4096, ...}) = 0 <br> 13:43:25.490348 statx(AT_FDCWD, "/root/code/40ms/slow.js", AT_STATX_SYNC_AS_STAT|AT_SYMLINK_NOFOLLOW, STATX_ALL, {stx_mask=STATX_ALL, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=618, ...}) = 0 <br> 13:43:25.490863 openat(AT_FDCWD, "/root/code/40ms/package.json", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <br> 13:43:25.491030 openat(AT_FDCWD, "/root/code/package.json", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <br> 13:43:25.491135 openat(AT_FDCWD, "/root/package.json", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <br> 13:43:25.491212 openat(AT_FDCWD, "/package.json", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <br> 13:43:25.493921 openat(AT_FDCWD, "/root/code/40ms/slow.js", O_RDONLY|O_CLOEXEC) = 17 <br> 13:43:25.494079 statx(17, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_ALL, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=618, ...}) = 0 <br> 13:43:25.494887 read(17, "const http = require('http')\ncon"..., 618) = 618 <br> 13:43:25.495095 close(17) = 0 <br> 13:43:25.496612 mprotect(0x143ab2380000, 262144, PROT_NONE) = 0 <br> 13:43:25.496673 madvise(0x143ab2380000, 262144, MADV_DONTNEED) = 0 <br> 13:43:25.496826 mprotect(0x143ab2380000, 8192, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.496871 mprotect(0x143ab2382000, 4096, PROT_NONE) = 0 <br> 13:43:25.496903 madvise(0x143ab2382000, 4096, MADV_DONTNEED) = 0 <br> 13:43:25.496934 mprotect(0x143ab2383000, 245760, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.496968 mprotect(0x143ab23bf000, 4096, PROT_NONE) = 0 <br> 13:43:25.496999 madvise(0x143ab23bf000, 4096, MADV_DONTNEED) = 0 <br> 13:43:25.497058 mprotect(0x143ab2383000, 245760, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.497099 mprotect(0x143ab2383000, 245760, PROT_READ|PROT_EXEC) = 0 <br> 13:43:25.498423 mmap(0x14b869000000, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x14b869000000 <br> 13:43:25.498499 munmap(0x14b869040000, 258048) = 0 <br> 13:43:25.498586 mprotect(0x14b869000000, 262144, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.504639 brk(0x5484000) = 0x5484000 <br> 13:43:25.505711 mprotect(0x143ab2383000, 245760, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.505820 mprotect(0x143ab2383000, 245760, PROT_READ|PROT_EXEC) = 0 <br> 13:43:25.506952 brk(0x54a8000) = 0x54a8000 <br> 13:43:25.507656 brk(0x54d0000) = 0x54d0000 <br> 13:43:25.510067 openat(AT_FDCWD, "/dev/null", O_RDONLY|O_CLOEXEC) = 17 <br> 13:43:25.510742 mprotect(0x143ab2383000, 245760, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.510824 mprotect(0x143ab2383000, 245760, PROT_READ|PROT_EXEC) = 0 <br> 13:43:25.511509 mprotect(0x143ab2383000, 245760, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.511618 mprotect(0x143ab2383000, 245760, PROT_READ|PROT_EXEC) = 0 <br> 13:43:25.512488 openat(AT_FDCWD, "/etc/resolv.conf", O_RDONLY) = 18 <br> 13:43:25.512581 fstat(18, {st_mode=S_IFREG|0644, st_size=708, ...}) = 0 <br> 13:43:25.512631 read(18, "# This file is managed by man:sy"..., 4096) = 708 <br> 13:43:25.512697 read(18, "", 4096) = 0 <br> 13:43:25.512748 close(18) = 0 <br> 13:43:25.512821 openat(AT_FDCWD, "/etc/nsswitch.conf", O_RDONLY) = 18 <br> 13:43:25.512877 fstat(18, {st_mode=S_IFREG|0644, st_size=510, ...}) = 0 <br> 13:43:25.512918 read(18, "# /etc/nsswitch.conf\n#\n# Example"..., 4096) = 510 <br> 13:43:25.512963 read(18, "", 4096) = 0 <br> 13:43:25.512997 close(18) = 0 <br> 13:43:25.513031 uname({sysname="Linux", nodename="mysterybox-client", ...}) = 0 <br> 13:43:25.513070 openat(AT_FDCWD, "/dev/urandom", O_RDONLY) = 18 <br> 13:43:25.513131 fstat(18, {st_mode=S_IFCHR|0666, st_rdev=makedev(0x1, 0x9), ...}) = 0 <br> 13:43:25.513173 ioctl(18, TCGETS, 0x7ffebd9f1e60) = -1 EINVAL (Invalid argument) <br> 13:43:25.513216 read(18, "z\250\0033$\224\366\240#\t\264O\332\376\t\303V<\202\204\376\262!%F\204\232\1V\356\1\260"..., 4096) = 4096 <br> 13:43:25.513323 close(18) = 0 <br> 13:43:25.514525 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 <br> 13:43:25.514626 mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f1c7b7ff000 <br> 13:43:25.514725 mprotect(0x7f1c7b800000, 8388608, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.514815 clone(child_stack=0x7f1c7bffef70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tid=[106161], tls=0x7f1c7bfff700, child_tidptr=0x7f1c7bfff9d0) = 106161 <br> 13:43:25.514915 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 <br> 13:43:25.514956 mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f1c7affe000 <br> 13:43:25.514994 mprotect(0x7f1c7afff000, 8388608, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.515059 clone(child_stack=0x7f1c7b7fdf70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tid=[106162], tls=0x7f1c7b7fe700, child_tidptr=0x7f1c7b7fe9d0) = 106162 <br> 13:43:25.515197 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 <br> 13:43:25.515268 mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f1c7a7fd000 <br> 13:43:25.515328 mprotect(0x7f1c7a7fe000, 8388608, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.515496 clone(child_stack=0x7f1c7affcf70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tid=[106163], tls=0x7f1c7affd700, child_tidptr=0x7f1c7affd9d0) = 106163 <br> 13:43:25.515625 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 <br> 13:43:25.515694 mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f1c79ffc000 <br> 13:43:25.515752 mprotect(0x7f1c79ffd000, 8388608, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.515808 clone(child_stack=0x7f1c7a7fbf70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tid=[106164], tls=0x7f1c7a7fc700, child_tidptr=0x7f1c7a7fc9d0) = 106164 <br> 13:43:25.515879 futex(0x7ffebd9f1e40, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY) = 0 <br> 13:43:25.515940 futex(0x7ffebd9f1e40, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY) = 0 <br> 13:43:25.515981 futex(0x7ffebd9f1e40, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY) = 0 <br> 13:43:25.516019 futex(0x7ffebd9f1e40, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY) = 0 <br> 13:43:25.516058 futex(0x45a8010, FUTEX_WAKE_PRIVATE, 2147483647) = 0 <br> 13:43:25.516089 futex(0x45a8008, FUTEX_WAKE_PRIVATE, 1) = 1 <br> 13:43:25.516958 futex(0x45a8008, FUTEX_WAKE_PRIVATE, 1) = 1 <br> 13:43:25.520021 epoll_ctl(13, EPOLL_CTL_ADD, 14, {EPOLLIN, {u32=14, u64=14}}) = 0 <br> 13:43:25.520100 epoll_ctl(13, EPOLL_CTL_ADD, 16, {EPOLLIN, {u32=16, u64=16}}) = 0 <br> 13:43:25.520141 epoll_wait(13, [{EPOLLIN, {u32=16, u64=16}}], 1024, 0) = 1 <br> 13:43:25.520181 read(16, "\1\0\0\0\0\0\0\0", 1024) = 8 <br> 13:43:25.520585 socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, IPPROTO_IP) = 18 <br> 13:43:25.520649 connect(18, {sa_family=AF_INET, sin_port=htons(8000), sin_addr=inet_addr("1.2.3.4")}, 16) = -1 EINPROGRESS (Operation now in progress) <br> 13:43:25.521263 mprotect(0x143ab2383000, 245760, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.521336 mprotect(0x143ab2383000, 245760, PROT_READ|PROT_EXEC) = 0 <br> 13:43:25.522913 futex(0x45a8008, FUTEX_WAKE_PRIVATE, 1) = 1 <br> 13:43:25.522979 futex(0x45a7fa0, FUTEX_WAKE_PRIVATE, 1) = 1 <br> 13:43:25.523063 epoll_ctl(13, EPOLL_CTL_ADD, 18, {EPOLLOUT, {u32=18, u64=18}}) = 0 <br> 13:43:25.523117 epoll_wait(13, [{EPOLLIN, {u32=16, u64=16}}, {EPOLLOUT, {u32=18, u64=18}}], 1024, 0) = 2 <br> 13:43:25.523158 read(16, "\1\0\0\0\0\0\0\0", 1024) = 8 <br> 13:43:25.523642 futex(0x45a800c, FUTEX_WAKE_PRIVATE, 1) = 1 <br> 13:43:25.523701 futex(0x45a7fa0, FUTEX_WAKE_PRIVATE, 1) = 1 <br> 13:43:25.523766 getsockopt(18, SOL_SOCKET, SO_ERROR, [0], [4]) = 0 <br> 13:43:25.524529 write(18, "POST / HTTP/1.1\r\nHost: mysterybo"..., 107) = 107 <br> 13:43:25.524845 mmap(0x3ea6a6e40000, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x3ea6a6e40000 <br> 13:43:25.524906 munmap(0x3ea6a6e80000, 258048) = 0 <br> 13:43:25.524948 mprotect(0x3ea6a6e40000, 262144, PROT_READ|PROT_WRITE) = 0 <br> 13:43:25.525314 epoll_ctl(13, EPOLL_CTL_ADD, 18, {EPOLLIN, {u32=18, u64=18}}) = -1 EEXIST (File exists) <br> 13:43:25.525400 epoll_ctl(13, EPOLL_CTL_MOD, 18, {EPOLLIN, {u32=18, u64=18}}) = 0 <br> 13:43:25.525457 epoll_wait(13, [{EPOLLIN, {u32=16, u64=16}}], 1024, 0) = 1 <br> 13:43:25.525510 read(16, "\1\0\0\0\0\0\0\0", 1024) = 8 <br> 13:43:25.525730 futex(0x45a800c, FUTEX_WAKE_PRIVATE, 1) = 1 <br> 13:43:25.525801 futex(0x45a7fa0, FUTEX_WAKE_PRIVATE, 1) = 1 <br> 13:43:25.525884 epoll_wait(13, [{EPOLLIN, {u32=16, u64=16}}], 1024, 0) = 1 <br> 13:43:25.525931 read(16, "\1\0\0\0\0\0\0\0", 1024) = 8 <br> 13:43:25.526175 futex(0x45a800c, FUTEX_WAKE_PRIVATE, 1) = 1 <br> 13:43:25.526272 futex(0x45a7fa0, FUTEX_WAKE_PRIVATE, 1) = 1 <br> 13:43:25.526398 epoll_wait(13, [{EPOLLIN, {u32=16, u64=16}}], 1024, 0) = 1 <br> 13:43:25.526473 read(16, "\1\0\0\0\0\0\0\0", 1024) = 8 <br> 13:43:25.527839 write(18, "buy some milk\n", 14) = 14 <br> 13:43:25.528095 epoll_ctl(13, EPOLL_CTL_MOD, 18, {EPOLLIN, {u32=18, u64=18}}) = 0 <br> 13:43:25.528154 epoll_wait(13, [], 1024, 0) = 0 <br> 13:43:25.528190 epoll_wait(13, [{EPOLLIN|EPOLLERR|EPOLLHUP, {u32=18, u64=18}}], 1024, -1) = 1 <br> 13:43:25.568621 read(18, "HTTP/1.1 200 OK\r\nContent-Length:"..., 65536) = 41 <br> 13:43:25.572025 ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.573094 ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.573197 fcntl(1, F_GETFL) = 0x2 (flags O_RDWR) <br> 13:43:25.573260 ioctl(1, TIOCGPTN, 0x7ffebd9ebd60) = -1 ENOTTY (Inappropriate ioctl for device) <br> 13:43:25.573333 ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.573398 fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(0x88, 0), ...}) = 0 <br> 13:43:25.573469 readlink("/proc/self/fd/1", "/dev/pts/0", 255) = 10 <br> 13:43:25.573586 stat("/dev/pts/0", {st_mode=S_IFCHR|0600, st_rdev=makedev(0x88, 0), ...}) = 0 <br> 13:43:25.573667 openat(AT_FDCWD, "/dev/pts/0", O_RDWR|O_NOCTTY|O_CLOEXEC) = 19 <br> 13:43:25.573760 dup3(19, 1, O_CLOEXEC) = 1 <br> 13:43:25.573844 ioctl(19, FIONBIO, [1]) = 0 <br> 13:43:25.574385 ioctl(19, FIONBIO, [0]) = 0 <br> 13:43:25.574486 ioctl(19, TIOCGWINSZ, {ws_row=36, ws_col=79, ws_xpixel=0, ws_ypixel=0}) = 0 <br> 13:43:25.574765 rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0 <br> 13:43:25.574913 read(4, "*", 1) = 1 <br> 13:43:25.574990 rt_sigaction(SIGWINCH, {sa_handler=0x148a710, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.575170 write(5, "*", 1) = 1 <br> 13:43:25.575249 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 <br> 13:43:25.577648 write(19, "Time elapsed: \33[33m50\33[39m milli"..., 40) = 40 <br> 13:43:25.581054 shutdown(18, SHUT_WR) = -1 ENOTCONN (Transport endpoint is not connected) <br> 13:43:25.582292 ioctl(2, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.582444 ioctl(2, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.582526 fcntl(2, F_GETFL) = 0x2 (flags O_RDWR) <br> 13:43:25.582587 ioctl(2, TIOCGPTN, 0x7ffebd9ef6c0) = -1 ENOTTY (Inappropriate ioctl for device) <br> 13:43:25.582656 ioctl(2, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.582754 fstat(2, {st_mode=S_IFCHR|0600, st_rdev=makedev(0x88, 0), ...}) = 0 <br> 13:43:25.582827 readlink("/proc/self/fd/2", "/dev/pts/0", 255) = 10 <br> 13:43:25.582939 stat("/dev/pts/0", {st_mode=S_IFCHR|0600, st_rdev=makedev(0x88, 0), ...}) = 0 <br> 13:43:25.583020 openat(AT_FDCWD, "/dev/pts/0", O_RDWR|O_NOCTTY|O_CLOEXEC) = 20 <br> 13:43:25.583122 dup3(20, 2, O_CLOEXEC) = 2 <br> 13:43:25.583182 ioctl(20, FIONBIO, [1]) = 0 <br> 13:43:25.583477 ioctl(20, FIONBIO, [0]) = 0 <br> 13:43:25.583577 ioctl(20, TIOCGWINSZ, {ws_row=36, ws_col=79, ws_xpixel=0, ws_ypixel=0}) = 0 <br> 13:43:25.583736 epoll_ctl(13, EPOLL_CTL_DEL, 18, 0x7ffebd9efb14) = 0 <br> 13:43:25.583815 close(18) = 0 <br> 13:43:25.585254 fstat(0, {st_mode=S_IFCHR|0600, st_rdev=makedev(0x88, 0), ...}) = 0 <br> 13:43:25.585363 fcntl(0, F_GETFL) = 0x2 (flags O_RDWR) <br> 13:43:25.585423 rt_sigprocmask(SIG_BLOCK, [TTOU], NULL, 8) = 0 <br> 13:43:25.585488 ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.585554 ioctl(0, SNDCTL_TMR_START or TCSETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.585618 ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.585681 rt_sigprocmask(SIG_UNBLOCK, [TTOU], NULL, 8) = 0 <br> 13:43:25.585741 fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(0x88, 0), ...}) = 0 <br> 13:43:25.585803 fcntl(1, F_GETFL) = 0x8002 (flags O_RDWR|O_LARGEFILE) <br> 13:43:25.585857 rt_sigprocmask(SIG_BLOCK, [TTOU], NULL, 8) = 0 <br> 13:43:25.585916 ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.585979 ioctl(1, SNDCTL_TMR_START or TCSETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.586039 ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.586100 rt_sigprocmask(SIG_UNBLOCK, [TTOU], NULL, 8) = 0 <br> 13:43:25.586160 fstat(2, {st_mode=S_IFCHR|0600, st_rdev=makedev(0x88, 0), ...}) = 0 <br> 13:43:25.586221 fcntl(2, F_GETFL) = 0x8002 (flags O_RDWR|O_LARGEFILE) <br> 13:43:25.586277 rt_sigprocmask(SIG_BLOCK, [TTOU], NULL, 8) = 0 <br> 13:43:25.586342 ioctl(2, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.586404 ioctl(2, SNDCTL_TMR_START or TCSETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.586465 ioctl(2, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.586525 rt_sigprocmask(SIG_UNBLOCK, [TTOU], NULL, 8) = 0 <br> 13:43:25.586584 rt_sigaction(SIGHUP, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.586652 rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.586745 rt_sigaction(SIGQUIT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.586810 rt_sigaction(SIGILL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.586868 rt_sigaction(SIGTRAP, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.586928 rt_sigaction(SIGABRT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.587013 rt_sigaction(SIGBUS, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.587082 rt_sigaction(SIGFPE, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.587141 rt_sigaction(SIGUSR1, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.587201 rt_sigaction(SIGSEGV, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.587260 rt_sigaction(SIGUSR2, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.587317 rt_sigaction(SIGPIPE, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.587441 rt_sigaction(SIGALRM, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.587510 rt_sigaction(SIGTERM, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.587567 rt_sigaction(SIGSTKFLT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.587628 rt_sigaction(SIGCHLD, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.587687 rt_sigaction(SIGCONT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.587746 rt_sigaction(SIGTSTP, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.587803 rt_sigaction(SIGTTIN, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.587861 rt_sigaction(SIGTTOU, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.587920 rt_sigaction(SIGURG, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.587983 rt_sigaction(SIGXCPU, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.588044 rt_sigaction(SIGXFSZ, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.588105 rt_sigaction(SIGVTALRM, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.588162 rt_sigaction(SIGWINCH, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.588221 rt_sigaction(SIGIO, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.588280 rt_sigaction(SIGPWR, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.588338 rt_sigaction(SIGSYS, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.588429 epoll_ctl(13, EPOLL_CTL_DEL, 19, 0x7ffebd9f3754) = -1 ENOENT (No such file or directory) <br> 13:43:25.588502 close(19) = 0 <br> 13:43:25.588559 rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0 <br> 13:43:25.588630 read(4, "*", 1) = 1 <br> 13:43:25.588699 rt_sigaction(SIGWINCH, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f1c82f603c0}, NULL, 8) = 0 <br> 13:43:25.588763 write(5, "*", 1) = 1 <br> 13:43:25.588823 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 <br> 13:43:25.588885 epoll_ctl(13, EPOLL_CTL_DEL, 20, 0x7ffebd9f3754) = -1 ENOENT (No such file or directory) <br> 13:43:25.588943 close(20) = 0 <br> 13:43:25.589004 epoll_wait(13, [], 1024, 0) = 0 <br> 13:43:25.589157 epoll_wait(13, [], 1024, 0) = 0 <br> 13:43:25.589432 mprotect(0x2047fb9c0000, 262144, PROT_NONE) = 0 <br> 13:43:25.589526 madvise(0x2047fb9c0000, 262144, MADV_DONTNEED) = 0 <br> 13:43:25.589618 mprotect(0x31c8a35c0000, 262144, PROT_NONE) = 0 <br> 13:43:25.589685 madvise(0x31c8a35c0000, 262144, MADV_DONTNEED) = 0 <br> 13:43:25.589777 mprotect(0xdb6ece00000, 262144, PROT_NONE) = 0 <br> 13:43:25.589862 madvise(0xdb6ece00000, 262144, MADV_DONTNEED) = 0 <br> 13:43:25.589964 mprotect(0x128c1d200000, 262144, PROT_NONE) = 0 <br> 13:43:25.590031 madvise(0x128c1d200000, 262144, MADV_DONTNEED) = 0 <br> 13:43:25.590138 munmap(0x73f40340000, 262144) = 0 <br> 13:43:25.590312 munmap(0x1b89e9140000, 262144) = 0 <br> 13:43:25.590426 munmap(0x281e95b80000, 262144) = 0 <br> 13:43:25.590543 munmap(0x1ee9fc840000, 262144) = 0 <br> 13:43:25.590684 munmap(0x3be87a680000, 262144) = 0 <br> 13:43:25.590810 munmap(0x73e0700000, 77824) = 0 <br> 13:43:25.590907 munmap(0x2df2b0dc0000, 262144) = 0 <br> 13:43:25.591029 munmap(0x39ced1100000, 262144) = 0 <br> 13:43:25.591148 munmap(0x22642200000, 262144) = 0 <br> 13:43:25.591267 munmap(0x3c877ed80000, 262144) = 0 <br> 13:43:25.591440 munmap(0x14b869000000, 262144) = 0 <br> 13:43:25.591566 munmap(0x3ea6a6e40000, 262144) = 0 <br> 13:43:25.591715 mprotect(0x143ab2340000, 262144, PROT_NONE) = 0 <br> 13:43:25.591816 madvise(0x143ab2340000, 262144, MADV_DONTNEED) = 0 <br> 13:43:25.591934 mprotect(0x143ab2380000, 262144, PROT_NONE) = 0 <br> 13:43:25.592007 madvise(0x143ab2380000, 262144, MADV_DONTNEED) = 0 <br> 13:43:25.592108 munmap(0x2d9c12500000, 8192) = 0 <br> 13:43:25.592191 munmap(0x17589f780000, 262144) = 0 <br> 13:43:25.592310 munmap(0x122891b40000, 163840) = 0 <br> 13:43:25.592418 munmap(0x128c1d200000, 262144) = 0 <br> 13:43:25.592495 munmap(0xdb6ece00000, 262144) = 0 <br> 13:43:25.592569 munmap(0x31c8a35c0000, 262144) = 0 <br> 13:43:25.592639 munmap(0x2047fb9c0000, 262144) = 0 <br> 13:43:25.592718 munmap(0x143ab233b000, 134217728) = 0 <br> 13:43:25.593003 futex(0x5314190, FUTEX_WAKE_PRIVATE, 2147483647) = 4 <br> 13:43:25.593117 futex(0x5314140, FUTEX_WAKE_PRIVATE, 1) = 1 <br> 13:43:25.593415 write(12, "\1\0\0\0\0\0\0\0", 8) = 8 <br> 13:43:25.595572 futex(0x7f1c82d539d0, FUTEX_WAIT, 106155, NULL) = -1 EAGAIN (Resource temporarily unavailable) <br> 13:43:25.595824 munmap(0x7f1c82553000, 8392704) = 0 <br> 13:43:25.595933 epoll_ctl(3, EPOLL_CTL_ADD, 6, {EPOLLIN, {u32=6, u64=6}}) = 0 <br> 13:43:25.596014 epoll_ctl(3, EPOLL_CTL_ADD, 8, {EPOLLIN, {u32=8, u64=8}}) = 0 <br> 13:43:25.596084 epoll_wait(3, [], 1024, 0) = 0 <br> 13:43:25.596143 close(6) = 0 <br> 13:43:25.596203 close(7) = 0 <br> 13:43:25.596265 close(8) = 0 <br> 13:43:25.596326 close(3) = 0 <br> 13:43:25.596408 futex(0x45ab1c4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 <br> 13:43:25.596503 fstat(0, {st_mode=S_IFCHR|0600, st_rdev=makedev(0x88, 0), ...}) = 0 <br> 13:43:25.596583 fcntl(0, F_GETFL) = 0x2 (flags O_RDWR) <br> 13:43:25.596641 rt_sigprocmask(SIG_BLOCK, [TTOU], NULL, 8) = 0 <br> 13:43:25.596703 ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.596781 ioctl(0, SNDCTL_TMR_START or TCSETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.596849 ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.596915 rt_sigprocmask(SIG_UNBLOCK, [TTOU], NULL, 8) = 0 <br> 13:43:25.596978 fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(0x88, 0), ...}) = 0 <br> 13:43:25.597043 fcntl(1, F_GETFL) = 0x8002 (flags O_RDWR|O_LARGEFILE) <br> 13:43:25.597099 rt_sigprocmask(SIG_BLOCK, [TTOU], NULL, 8) = 0 <br> 13:43:25.597158 ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.597220 ioctl(1, SNDCTL_TMR_START or TCSETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.597282 ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.597343 rt_sigprocmask(SIG_UNBLOCK, [TTOU], NULL, 8) = 0 <br> 13:43:25.597403 fstat(2, {st_mode=S_IFCHR|0600, st_rdev=makedev(0x88, 0), ...}) = 0 <br> 13:43:25.597469 fcntl(2, F_GETFL) = 0x8002 (flags O_RDWR|O_LARGEFILE) <br> 13:43:25.597524 rt_sigprocmask(SIG_BLOCK, [TTOU], NULL, 8) = 0 <br> 13:43:25.597585 ioctl(2, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.597649 ioctl(2, SNDCTL_TMR_START or TCSETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.597709 ioctl(2, TCGETS, {B38400 opost isig icanon echo ...}) = 0 <br> 13:43:25.597770 rt_sigprocmask(SIG_UNBLOCK, [TTOU], NULL, 8) = 0 <br> 13:43:25.598277 close(4) = 0 <br> 13:43:25.598354 close(5) = 0 <br> 13:43:25.598420 futex(0x45a800c, FUTEX_WAKE_PRIVATE, 1) = 1 <br> 13:43:25.598488 futex(0x45a7fa0, FUTEX_WAKE_PRIVATE, 1) = 1 <br> 13:43:25.598758 munmap(0x7f1c81d52000, 8392704) = 0 <br> 13:43:25.598876 munmap(0x7f1c81551000, 8392704) = 0 <br> 13:43:25.598961 munmap(0x7f1c80d50000, 8392704) = 0 <br> 13:43:25.599038 munmap(0x7f1c8054f000, 8392704) = 0 <br> 13:43:25.599222 exit_group(0) = ? <br> 13:43:25.601138 +++ exited with 0 +++ <br> </pre>

<<ask-area "Which lines from the above nonsense are making the HTTP request and receiving the HTTP response? It's a POST request, the response is a 200 OK, and the POST request body is 'buy some milk'." "$strace" "strace interpretation">><p> <<if !$strace eq "">> The lines you highlighted were: <pre><<print $strace>></pre> <</if>> </p>

Here are the lines that make the HTTP request and show the HTTP response: <pre> 13:43:25.524529 write(18, "POST / HTTP/1.1\r\nHost: mysterybo"..., 107) = 107 <br> 13:43:25.527839 write(18, "buy some milk\n", 14) = 14 <br> 13:43:25.568621 read(18, "HTTP/1.1 200 OK\r\nContent-Length:"..., 65536) = 41 </pre>

<<ask "How long did it take to receive the HTTP response after the request was sent?" "$time_to_response" "strace interpretation 2">><<you-said "You said it took this long to get a HTTP response:" $time_to_response>>

Let's do some calculations using this output:

<pre> 13:43:25.524529 write(18, "POST / HTTP/1.1\r\nHost: mysterybo"..., 107) = 107 <br> 13:43:25.527839 write(18, "buy some milk\n", 14) = 14 <br> 13:43:25.568621 read(18, "HTTP/1.1 200 OK\r\nContent-Length:"..., 65536) = 41 </pre>

<p> The difference between <code>13:43:25.568621</code> (line 3) and <code>13:43:25.527839</code> (line 2) is 41 milliseconds (568 - 527 = 41). </p>

<<newinfo "strace shows it took 41ms to receive a response">>

<<ask "Why do you think this 41ms delay is happening?" "$why_delay" "strace 3">><<you-said "Your reason for the delay:" $why_delay>>

<p> From just the strace information, there's no real way to tell why this delay is happening. The server could just be doing a big calculation that takes 40ms! Or maybe the server had to make a database query! </p>

<p> To know for sure what's happening, we'll need to get more information. </p>

<div class="nav go-back"> [[Go back -> Client]] </div>You decide to use tcpdump to look at the TCP packets on port 8000.

<<ask "What tcpdump command will show you packets on port 8000?" "$tcpdump_command" "tcpdump 2">><<you-said "The tcpdump command you said to run:" $tcpdump_command>>

You decide to run this command:

<pre> $ sudo tcpdump -i any port 8000 <br> 14:56:11.240271 IP mysterybox-client.48126 > mysterybox.8000: Flags [S], seq 2428508727, win 64240, options [mss 1460,sackOK,TS val 1858170944 ecr 0,nop,wscale 7], length 0 <br> 14:56:11.242504 IP mysterybox.8000 > mysterybox-client.48126: Flags [S.], seq 3452350398, ack 2428508728, win 65160, options [mss 1460,sackOK,TS val 1885475954 ecr 1858170944,nop,wscale 7], length 0 <br> 14:56:11.242539 IP mysterybox-client.48126 > mysterybox.8000: Flags [.], ack 1, win 502, options [nop,nop,TS val 1858170946 ecr 1885475954], length 0 <br> 14:56:11.250852 IP mysterybox-client.48126 > mysterybox.8000: Flags [P.], seq 1:108, ack 1, win 502, options [nop,nop,TS val 1858170955 ecr 1885475954], length 107 <br> 14:56:11.294309 IP mysterybox.8000 > mysterybox-client.48126: Flags [.], ack 108, win 509, options [nop,nop,TS val 1885476006 ecr 1858170955], length 0 <br> 14:56:11.294388 IP mysterybox-client.48126 > mysterybox.8000: Flags [P.], seq 108:122, ack 1, win 502, options [nop,nop,TS val 1858170998 ecr 1885476006], length 14 <br> 14:56:11.294738 IP mysterybox.8000 > mysterybox-client.48126: Flags [.], ack 122, win 509, options [nop,nop,TS val 1885476007 ecr 1858170998], length 0 <br> 14:56:11.295013 IP mysterybox.8000 > mysterybox-client.48126: Flags [P.], seq 1:42, ack 122, win 509, options [nop,nop,TS val 1885476007 ecr 1858170998], length 41 <br> 14:56:11.295025 IP mysterybox-client.48126 > mysterybox.8000: Flags [.], ack 42, win 502, options [nop,nop,TS val 1858170999 ecr 1885476007], length 0 <br> 14:56:11.295050 IP mysterybox.8000 > mysterybox-client.48126: Flags [R.], seq 42, ack 122, win 509, options [nop,nop,TS val 1885476007 ecr 1858170998], length 0 <br> 14:56:11.295241 IP mysterybox.8000 > mysterybox-client.48126: Flags [R], seq 3452350440, win 0, length 0 </pre>

<p> There's not a lot of detail here about exactly which data is being sent back and forth. Hmm. </p>

<div class="nav"> [[Look at the packets in more detail -> tcpdump 3]] </div>The <code>-A</code> flag to tcpdump shows you the content of each packet.

<pre> $ sudo tcpdump -A -i any port 8000 16:13:09.074136 IP 5.6.7.8.48568 > mysterybox.8000: Flags [S], seq 2007520623, win 64240, options [mss 1460,sackOK,TS val 2381188778 ecr 0,nop,wscale 7], length 0 <br> E..<Qc@.>[email protected]................... <br> ............ <br> 16:13:09.074189 IP mysterybox.8000 > 5.6.7.8.48568: Flags [S.], seq 607465505, ack 2007520624, win 65160, options [mss 1460,sackOK,TS val 2408493786 ecr 2381188778,nop,wscale 7], length 0 <br> E..<..@[email protected].@..$50!w.Up............... <br> ............ <br> 16:13:09.074476 IP 5.6.7.8.48568 > mysterybox.8000: Flags [.], ack 1, win 502, options [nop,nop,TS val 2381188779 ecr 2408493786], length 0 <br> E..4Qd@.>[email protected]$50"........... <br> ........ <br> 16:13:09.079810 IP 5.6.7.8.48568 > mysterybox.8000: Flags [P.], seq 1:108, ack 1, win 502, options [nop,nop,TS val 2381188784 ecr 2408493786], length 107 <br> E...Qe@.>[email protected]$50"........... <br> ........POST / HTTP/1.1 <br> Host: mysterybox:8000 <br> Content-Type: text/plain <br> Content-Length: 14 <br> Connection: close <br> <br> <br> 16:13:09.122094 IP mysterybox.8000 > 5.6.7.8.48568: Flags [.], ack 108, win 509, options [nop,nop,TS val 2408493834 ecr 2381188784], length 0 <br> E..4..@[email protected].@..$50"w.U............ <br> ... <br> .... <br> 16:13:09.122608 IP 5.6.7.8.48568 > mysterybox.8000: Flags [P.], seq 108:122, ack 1, win 502, options [nop,nop,TS val 2381188827 ecr 2408493834], length 14 <br> E..BQf@.>[email protected].$50".....w..... <br> ....... <br> buy some milk <br> <br> 16:13:09.122623 IP mysterybox.8000 > 5.6.7.8.48568: Flags [.], ack 122, win 509, options [nop,nop,TS val 2408493835 ecr 2381188827], length 0 <br> E..4..@[email protected].@..$50"w.U............ <br> ........ <br> 16:13:09.122896 IP mysterybox.8000 > 5.6.7.8.48568: Flags [P.], seq 1:42, ack 122, win 509, options [nop,nop,TS val 2408493835 ecr 2381188827], length 41 <br> E..]..@[email protected].@..$50"w.U............ <br> ........HTTP/1.1 200 OK <br> Content-Length: 1 <br> <br> a <br> <br> 16:13:09.122931 IP mysterybox.8000 > 5.6.7.8.48568: Flags [R.], seq 42, ack 122, win 509, options [nop,nop,TS val 2408493835 ecr 2381188827], length 0 <br> E..4..@[email protected].@..$50Kw.U............ <br> ........ <br> 16:13:09.123177 IP 5.6.7.8.48568 > mysterybox.8000: Flags [.], ack 42, win 502, options [nop,nop,TS val 2381188827 ecr 2408493835], length 0 <br> E..4Qg@.>[email protected].$50K........... <br> ........ <br> 16:13:09.123197 IP mysterybox.8000 > 5.6.7.8.48568: Flags [R], seq 607465547, win 0, length 0 <br> E..(..@[email protected].@..$50K....P....... <br> </pre>

<<ask "There's a delay of about 44ms here, from 16:13:09.079810 to 16:13:09.122094. What is it waiting for?" "$why_delay" "termshark interpretation">><p> You run : </p> <pre> $ sudo termshark -f 'port 8000' </pre> <p> to capture all traffic on port 8000. You then run <code>node slow.js</code> in a separate terminal, and here's what you see: </p>

<pre style="font-size: 0.8em"> No. - Time - Source - Destination - Protocol - Length - Info - ▲ <br> 1 0.000000000 5.6.7.8 1.2.3.4 TCP 74 55710 → 8000 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 <br> 2 0.001808336 1.2.3.4 5.6.7.8 TCP 74 8000 → 55710 [SYN, ACK] Seq=0 Ack=1 Win=65160 Len=0 MSS=1460 <br> 3 0.001852765 5.6.7.8 1.2.3.4 TCP 66 55710 → 8000 [ACK] Seq=1 Ack=1 Win=64256 Len=0 TSval=18565210 <br> 4 0.015515742 5.6.7.8 1.2.3.4 TCP 173 POST / HTTP/1.1 [TCP segment of a reassembled PDU] <br> 5 0.058616727 1.2.3.4 5.6.7.8 TCP 66 8000 → 55710 [ACK] Seq=1 Ack=108 Win=65152 Len=0 TSval=188382 <br> 6 0.058652284 5.6.7.8 1.2.3.4 HTTP 80 POST / HTTP/1.1 (text/plain) █ <br> 7 0.059055154 1.2.3.4 5.6.7.8 TCP 66 8000 → 55710 [ACK] Seq=1 Ack=122 Win=65152 Len=0 TSval=188382 <br> 8 0.059094804 1.2.3.4 5.6.7.8 HTTP 107 HTTP/1.1 200 OK Continuation <br> 9 0.059104365 5.6.7.8 1.2.3.4 TCP 66 55710 → 8000 [ACK] Seq=122 Ack=42 Win=64256 Len=0 TSval=18565 <br> </pre>

<<ask "There's a delay of about 43ms here. What is it waiting for?" "$why_delay" "termshark interpretation">><<you-said "You said it was waiting for:" $why_delay>>

<p> Here's the overall timeline of what's happening. </p>

<ol>

<li> There's a TCP handshake. It takes about 2ms to finish. </li> <li> 14ms later, the client sends part of a POST request (the headers) </li> <li> 43ms later, the server sends an ACK packet </li> <li> After the ACK, the client immediately sends the body of the POST request </li> <li> 1.4ms later, the server responds with a HTTP/1.1 200 OK response </li> </ol>

<p> So the 43ms wait is for an ACK packet for the server. </p>

<<newinfo "The client spends 41ms waiting for the server to send an ACK packet">>

<p> What does this mean? Is this happening because the Python server code is slow to process the HTTP request? </p>

<div class="yesno"> [[Yes->termshark 3]] [[No->termshark 3]] </div><p> This is <strong>not</strong> happening because the Python code is slow to process the HTTP request. After the POST request gets sent, the server replies almost immediately (within 2ms). The problem is that the client is unable to actually finish sending the POST request because it's waiting for the server to send an ACK packet. </p>

<div class="nav"> [[Make a guess at why this is happening->diagnosis]] [[Go back and keep investigating->Client]] </div><<ask "Why do you think the client is waiting 41ms for the server to send an ACK?" "$nagle" "nagle">>

(warning: the next page will tell you what's happening, click "go back" if you want to keep investigating!)

<div class="nav go-back"> [[Go back -> Reproduce]] </div><<you-said "You said the reason the server is slow to send the ACK is: " $nagle>>

<p> This is going to be a pretty big leap of logic if you haven't seen it before. </p>

<p> The Linux kernel's TCP implementation has a feature called <a href="https://en.wikipedia.org/wiki/TCP_delayed_acknowledgment">delayed acknowledgement</a> or "delayed ACKs". Basically the idea behind delayed ACKs is to not ACK every packet as an optimization. <br>So instead of this: </p>

<p> <html> <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" id="svg1274" width="244.89557" height="118.48486"> <metadata id="metadata1280"> <rdf:RDF> <cc:Work rdf:about=""> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> </cc:Work> </rdf:RDF> </metadata> <defs id="defs1278" /> <sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="640" inkscape:window-height="480" id="namedview1276" /> <inkscape:clipboard style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke-width:1.00000017;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1" min="202.57625,63.573074" max="447.47182,182.05793" /> <g id="g1282" transform="matrix(1.33333,0,0,-1.33333,-202.57625,1007.4269)"> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g8" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 219.643,92.381 c -0.811,0.82 0.107,4.957 0.175,5.84" style="fill:none;stroke:#000000;stroke-width:2px" id="path6" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g12" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 225.862,91.626 c 0.429,2.435 0.101,5.073 0.326,7.545" style="fill:none;stroke:#000000;stroke-width:2px" id="path10" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g16" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 216.936,105.927 c -0.493,7.683 12.813,7.772 12.813,0.286" style="fill:none;stroke:#000000;stroke-width:2px" id="path14" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g20" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 210.526,90.4 c -0.094,-0.883 -0.323,1.751 -0.361,2.638 -0.088,2.02 -0.119,4.033 -0.079,6.053 0.083,4.274 0.244,8.551 -0.08,12.819 -0.129,1.707 -0.995,4.607 -0.118,6.251 0.814,1.527 4.049,0.822 5.341,0.752 4.981,-0.269 10.005,-0.554 14.994,-0.554 1.092,0 4.44,0.992 5.302,0.237 2.045,-1.789 0.623,-9.792 0.791,-12.027 0.389,-5.148 0.382,-10.314 0.633,-15.469 0.056,-1.15 0.737,-4.167 -0.593,-4.906 -1.674,-0.93 -5.226,0.588 -6.963,0.712 -4.241,0.303 -8.569,0.43 -12.819,0.593 -3.356,0.129 -6.843,-1.291 -6.488,2.968" style="fill:none;stroke:#000000;stroke-width:2px" id="path18" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g24" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 208.355,128.777 c 0.154,0.142 -1.926,0.104 -1.949,0.106 -1.062,0.076 -1.964,1.041 -2.413,1.938 -1.329,2.657 0.554,4.493 3.244,4.194" style="fill:none;stroke:#000000;stroke-width:2px" id="path22" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g28" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 212.879,124.566 c 0.149,-0.334 -0.445,0.629 -0.459,0.993 -0.031,0.812 -0.015,1.642 0,2.453 0.048,2.638 0.108,5.46 0.751,8.032" style="fill:none;stroke:#000000;stroke-width:2px" id="path26" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g32" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 217.507,130.662 c -0.568,0.228 0.41,3.919 0.491,4.353" style="fill:none;stroke:#000000;stroke-width:2px" id="path30" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g36" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 217.783,126.892 c 0.013,0.001 -0.37,0.411 -0.457,0.527" style="fill:none;stroke:#000000;stroke-width:2px" id="path34" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g40" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 222.247,132.734 c -0.085,0.094 1.778,0.105 1.923,0.105 1.043,0 2.662,0.186 3.482,-0.633 0.98,-0.98 -1.064,-2.121 -1.701,-2.492 -0.586,-0.342 -1.273,-0.752 -1.979,-0.752 -2.317,0 -2.378,3.733 -1.82,5.222 0.998,2.662 3.831,3.16 6.331,2.968" style="fill:none;stroke:#000000;stroke-width:2px" id="path38" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g44" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 232.592,130.287 c 0.073,0.788 -0.206,1.712 -0.232,2.513 -0.017,0.523 0.005,0.778 0.039,1.305 0.358,5.54 0.015,-3.075 0.554,-4.154 2.317,-4.634 4.706,4.763 4.867,6.211" style="fill:none;stroke:#000000;stroke-width:2px" id="path42" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g48" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 240.67,123.841 c -0.048,-0.465 -0.002,0.935 -0.002,1.402 0,0.78 0.01,1.554 0.04,2.334 0.078,2.066 -0.24,11.03 3.956,7.596" style="fill:none;stroke:#000000;stroke-width:2px" id="path46" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g52" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 237.496,127.991 c 0.502,0.584 6.851,-1.094 7.682,-1.205" style="fill:none;stroke:#000000;stroke-width:2px" id="path50" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,57.9612,790.806)" id="g104" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 331.887,94.294 c 0.862,6.066 0.107,13.803 -0.48,19.924 -0.123,1.285 -1.076,5.933 0.335,6.847 3.656,2.365 11.736,0.069 15.763,-0.031 2.271,-0.056 4.675,-0.13 6.938,0.122 0.683,0.076 1.726,0.799 2.343,0.304 1.335,-1.067 0.651,-4.274 0.548,-5.66 -0.383,-5.168 0.29,-10.24 0.548,-15.398 0.08,-1.595 0.886,-4.818 -0.883,-5.842 -1.648,-0.955 -4.195,-0.417 -5.994,-0.457 -3.27,-0.072 -6.89,-0.22 -10.073,-0.943 -2.034,-0.462 -3.526,-0.655 -5.599,-0.396 -0.12,0.015 -3.333,0.312 -2.495,0.731" style="fill:none;stroke:#000000;stroke-width:2px" id="path102" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,57.9612,790.806)" id="g108" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 339.844,103.044 c -0.122,0.011 -0.259,0.132 -0.373,0.188" style="fill:none;stroke:#000000;stroke-width:2px" id="path106" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,57.9612,790.806)" id="g112" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 349.397,102.514 c -0.094,-0.031 -0.435,0.399 -0.492,0.475" style="fill:none;stroke:#000000;stroke-width:2px" id="path110" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,57.9612,790.806)" id="g116" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 338.926,111.093 c -0.324,-0.047 0.913,1.409 0.971,1.451 0.815,0.585 1.746,1.116 2.709,1.4 2.382,0.703 10.088,0.837 8.612,-3.591" style="fill:none;stroke:#000000;stroke-width:2px" id="path114" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,51.4657,791.231)" id="g120" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 333.869,130.554 c 0.022,-0.009 -3.664,-0.819 -3.527,1.648 0.125,2.247 8.099,3.342 2.009,4.717 -0.59,0.133 -1.162,0.233 -1.765,0.183" style="fill:none;stroke:#000000;stroke-width:2px" id="path118" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,51.4657,791.231)" id="g124" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 338.467,133.092 c 1.082,2.944 7.559,-3.379 1.857,-3.142 -4.511,0.188 -3.189,7.823 1.247,8.034" style="fill:none;stroke:#000000;stroke-width:2px" id="path122" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,51.4657,791.231)" id="g128" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 346.058,132.464 c -0.573,0.563 0.075,3.325 0.199,3.968 0.017,0.084 0.217,1.584 0.213,1.582 -0.606,-0.202 -0.76,-2.28 -0.821,-2.769 -0.367,-2.936 0.459,-4.621 3.53,-4.26" style="fill:none;stroke:#000000;stroke-width:2px" id="path126" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,51.4657,791.231)" id="g132" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 352.923,132.027 c -0.027,0.815 2.369,6.032 2.95,5.683 0.604,-0.362 0.872,-5.597 1.157,-6.451" style="fill:none;stroke:#000000;stroke-width:2px" id="path130" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,51.4657,791.231)" id="g136" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 361.915,133.7 c 0.272,-0.382 0.891,0.371 1.359,0.361 0.948,-0.021 1.979,-0.188 2.768,-0.755 1.739,-1.248 -0.176,-3.059 -1.617,-3.379 -0.864,-0.192 -1.559,0.496 -2.085,1.078 -2.393,2.652 -1.396,5.773 2.354,6.075 1.452,0.117 2.627,-0.501 3.829,-1.222" style="fill:none;stroke:#000000;stroke-width:2px" id="path134" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,51.4657,791.231)" id="g140" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 370.112,131.216 c -0.054,-0.016 0.328,1.525 0.352,1.605 0.173,0.594 1.549,4.202 1.006,4.745 -0.006,0.006 -0.12,-0.58 -0.126,-0.63 -0.051,-0.429 -0.121,-0.862 -0.161,-1.294 -0.126,-1.343 -0.072,-2.742 0.485,-3.99 1.12,-2.509 4.155,-1.163 6.183,-0.88" style="fill:none;stroke:#000000;stroke-width:2px" id="path138" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g184" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 268.75,75.37 c -0.161,1.083 -2.177,-0.892 -3.23,-0.591 -2.092,0.598 -3.427,2.786 -3.889,4.8 -0.985,4.294 3.451,7.155 5.957,2.979 2.393,-3.988 -0.351,-9.58 -1.437,-13.561" style="fill:none;stroke:#000000;stroke-width:2px" id="path182" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g188" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 276.709,76.51 c 0.363,-0.75 -2.018,-1.99 -2.604,-1.836 -2.814,0.741 -2.028,6.558 -0.911,8.234 2.31,3.465 4.731,-1.764 4.731,-3.854 0,-0.148 -0.158,-2.221 -0.631,-2.103 -0.206,0.052 0.703,1.965 0.736,2.033 0.913,1.87 2.068,4.284 4.415,4.415" style="fill:none;stroke:#000000;stroke-width:2px" id="path186" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g192" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 284.7,67.713 c 0.136,-0.494 -0.433,0.987 -0.363,1.495 0.186,1.354 0.511,2.696 0.806,4.029 0.703,3.183 1.589,6.442 1.822,9.706" style="fill:none;stroke:#000000;stroke-width:2px" id="path190" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g196" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 281.306,75.424 c 1.767,-0.473 4.272,-1.791 6.71,-2.082" style="fill:none;stroke:#000000;stroke-width:2px" id="path194" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g200" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 298.926,74.423 c 0.282,0.123 -0.862,0.26 -1.099,0.181 -0.972,-0.324 -1.915,-0.642 -2.873,-0.035 -1.826,1.156 -2.412,4.236 -1.717,6.167 0.862,2.393 3.293,1.513 4.625,0.105 0.572,-0.605 0.974,-1.327 1.262,-2.103 0.011,-0.029 0.358,-1.775 0.14,-1.611 -1.876,1.407 2.098,5.803 3.013,6.447" style="fill:none;stroke:#000000;stroke-width:2px" id="path198" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g204" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 256.049,83.498 c 0.459,-0.563 0.032,1.456 0.116,2.178 0.157,1.359 0.435,2.774 1.086,3.995 1.517,2.844 6.2,3.359 9.075,3.539 2.949,0.184 6.027,0.214 8.971,-0.035 2.676,-0.227 5.278,-0.91 7.919,-1.367 7.33,-1.268 24.283,-1.678 23.231,-12.719 -0.303,-3.184 -0.45,-7.756 -2.908,-10.127 -3.085,-2.974 -8.286,-2.868 -12.264,-3.258 -9.397,-0.922 -23.62,-2.627 -32.587,1.857 -2.646,1.322 -5.97,4.247 -6.483,7.323 -0.17,1.024 0.922,3.168 0.561,3.889 -0.673,1.346 -4.841,3.296 -6.062,4.661 -1.542,1.723 -2.371,3.649 -3.013,5.851 -0.323,1.107 -0.806,3.364 -0.806,3.364 0,0 0.412,-1.33 0.806,-1.892 0.922,-1.318 2.107,-2.566 3.293,-3.644 3.478,-3.161 6.324,-3.953 10.863,-4.52" style="fill:none;stroke:#000000;stroke-width:2px" id="path202" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g208" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 320.314,103.928 c -0.637,0.769 2.365,-3.702 2.847,-5.112 0.818,-2.389 1.063,-4.882 1.191,-7.393 0.009,-0.173 0.089,-2.698 0.421,-2.698 0.442,0 1.185,3.273 1.296,3.609 1,2.998 1.983,6.007 3.084,8.97 0.264,0.712 1.079,2.776 0.385,3.469" style="fill:none;stroke:#000000;stroke-width:2px" id="path206" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g212" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 323.762,100.059 c 1.122,-0.889 3.127,-1.308 4.585,-1.768" style="fill:none;stroke:#000000;stroke-width:2px" id="path210" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g216" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 342.668,94.131 c 0.187,-0.023 -2.068,-1.902 -2.898,-1.902 -2.011,0 -3.416,2.026 -3.749,3.819 -1.007,5.413 2.311,10.173 7.674,6.342" style="fill:none;stroke:#000000;stroke-width:2px" id="path214" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g220" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 347.15,91.016 c 0.132,-0.468 -0.144,0.974 -0.092,1.458 0.094,0.864 0.185,1.729 0.281,2.593 0.317,2.855 -0.165,6.737 0.911,9.426" style="fill:none;stroke:#000000;stroke-width:2px" id="path218" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g224" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 347.793,99.947 c 0.082,-3.505 5.686,-5.894 8.376,-7.508" style="fill:none;stroke:#000000;stroke-width:2px" id="path222" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g228" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 349.854,97.721 c 1.577,2.919 5.472,5.537 8.207,7.543" style="fill:none;stroke:#000000;stroke-width:2px" id="path226" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g232" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 365.066,100.036 c 0.184,0.705 -0.16,2.312 -0.065,3.149 0.168,1.49 0.731,3.354 0.215,4.827 -1.177,3.365 -7.681,3.696 -10.458,4.238 -9.72,1.897 -19.542,1.327 -29.294,0.157 -5.145,-0.618 -12.263,0.077 -13.636,-6.495 -0.531,-2.541 0.072,-5.331 0.51,-7.848 0.86,-4.943 2.904,-10.237 7.162,-13.185 2.839,-1.966 6.111,-2.154 9.437,-2.453 5.887,-0.53 11.713,-0.646 17.6,-0.078 4.537,0.437 9.393,0.246 13.813,1.451 1.643,0.448 3.888,1.321 4.709,2.963 0.759,1.518 0.373,3.687 0.373,5.337" style="fill:none;stroke:#000000;stroke-width:2px" id="path230" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g236" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 304.106,172.639 c -0.134,0.37 0.556,-1.072 0.619,-1.193 0.551,-1.053 1.132,-2.089 1.609,-3.179 1.076,-2.46 1.442,-5.025 2.06,-7.613 0.106,-0.444 0.395,-2.433 1.119,-2.433 0.869,0 1.751,2.631 2.001,3.218 1.31,3.073 2.355,6.497 2.355,9.87" style="fill:none;stroke:#000000;stroke-width:2px" id="path234" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g240" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 307.224,167.042 c 0.408,0.224 3.955,-1.245 4.486,-1.384" style="fill:none;stroke:#000000;stroke-width:2px" id="path238" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g244" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 324.126,160.45 c -1.004,-2.092 -3.269,-0.205 -4.038,1.107 -3.056,5.219 -0.741,9.752 5.337,8.143" style="fill:none;stroke:#000000;stroke-width:2px" id="path242" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g248" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 330.766,158.017 c -0.87,-0.083 -0.423,2.35 -0.396,2.657 0.282,3.252 -0.052,6.681 0.549,9.889" style="fill:none;stroke:#000000;stroke-width:2px" id="path246" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g252" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 330.925,166.17 c 0.374,-2.691 4.854,-5.143 7.097,-6.006" style="fill:none;stroke:#000000;stroke-width:2px" id="path250" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g256" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 332.293,164.456 c 1.142,1.629 3.039,2.482 4.571,3.733 1.364,1.113 2.511,2.637 4.121,3.394" style="fill:none;stroke:#000000;stroke-width:2px" id="path254" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g260" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 347.903,169.286 c -0.114,2.413 0.341,5.653 -1.071,7.772 -1.246,1.868 -3.513,2.519 -5.612,2.923 -4.474,0.86 -8.946,0.583 -13.48,0.824 -8.58,0.457 -16.384,0.726 -24.231,-3.198 -2.136,-1.068 -4.987,-2.376 -6.338,-4.434 -1.907,-2.906 -2.016,-7.977 -1.727,-11.341 0.604,-7.004 6.303,-10.486 12.793,-11.165 6.167,-0.644 12.349,-0.667 18.542,-0.667 5.391,0 11.079,-0.059 16.344,1.295 3.511,0.903 6.181,4.024 6.181,7.711 0,0.545 0.166,2.424 -0.236,2.826" style="fill:none;stroke:#000000;stroke-width:2px" id="path258" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g264" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 262.521,129.189 c 0.691,1.355 -0.293,3.753 0.609,5.106 0.125,0.187 0.02,-0.451 0.02,-0.676 v -1.391 c 0,-1.34 0.219,-3.676 1.944,-3.929 2.472,-0.362 2.967,3.702 2.967,5.361 0,0.198 0,-0.395 0,-0.593 0,-0.423 -0.011,-0.847 0,-1.269 0.035,-1.353 0.389,-3.324 2.005,-3.622 2.825,-0.52 2.403,4.317 2.619,5.832" style="fill:none;stroke:#000000;stroke-width:2px" id="path262" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g268" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 279.493,128.88 c -3.03,-1.367 -5.011,3.596 -2.777,5.271 2.745,2.058 4.522,-2.178 2.906,-4.256" style="fill:none;stroke:#000000;stroke-width:2px" id="path266" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g272" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 283.573,130.067 c -0.294,0.924 0.949,3.85 0.428,4.371 -0.171,0.17 -0.668,-2.04 -0.675,-2.149 -0.117,-1.835 0.392,-3.495 2.087,-4.379" style="fill:none;stroke:#000000;stroke-width:2px" id="path270" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g276" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 290.127,130.214 c 1.138,0.595 4.678,0.6 4.862,-1.24 0.138,-1.38 -2.794,-1.739 -3.622,-1.452 -4.064,1.406 -2.92,7.663 1.228,7.898" style="fill:none;stroke:#000000;stroke-width:2px" id="path274" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g280" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 309.932,129.174 c -0.77,0.535 -1.929,-0.354 -2.727,0.598 -1.058,1.261 -1.271,6.043 1.105,6.098 1.456,0.034 2.518,-1.625 2.926,-2.824 0.913,-2.684 -1.1,-6.744 -1.801,-9.371" style="fill:none;stroke:#000000;stroke-width:2px" id="path278" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g284" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 318.615,130.342 c 0.569,-0.347 -0.722,-1.561 -1.036,-1.634 -2.118,-0.488 -3.225,2.798 -2.701,4.338 0.798,2.347 3.044,0.016 3.52,-1.186 0.063,-0.161 0.29,-1.332 0.47,-1.392 0.137,-0.045 0.602,1.262 0.635,1.33 0.519,1.085 1.124,1.871 2.23,2.374" style="fill:none;stroke:#000000;stroke-width:2px" id="path282" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g288" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 325.084,124.33 c -0.464,0.332 0.206,2.154 0.291,2.516 0.489,2.07 0.738,4.141 0.86,6.262" style="fill:none;stroke:#000000;stroke-width:2px" id="path286" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g292" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 323.473,129.53 c 1.688,-0.253 3.249,-0.989 5.033,-1.108" style="fill:none;stroke:#000000;stroke-width:2px" id="path290" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g296" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 336.76,128.214 c -2.908,-2.217 -6.238,2.293 -3.896,4.485 2.023,1.891 3.927,-2.537 4.911,-3.274 0.526,-0.395 0.282,1.287 0.512,1.903 0.415,1.114 1.097,1.745 2.148,2.271" style="fill:none;stroke:#000000;stroke-width:2px" id="path294" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g300" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 263.057,122.783 c -0.621,0.356 -1.982,0.12 -2.71,0.319 -1.824,0.497 -3.712,1.741 -4.911,3.192 -3.778,4.574 -2.958,15.261 3.581,16.799 3.55,0.836 7.37,0.553 10.988,0.696 6.604,0.261 13.205,0.606 19.807,0.9 15.118,0.675 31.997,3.859 46.92,0.041 7.096,-1.815 14.6,-13.699 8.328,-19.971 -1.407,-1.407 -3.484,-1.976 -5.32,-2.578 -4.406,-1.445 -9.136,-2.112 -13.69,-2.906 -6.867,-1.197 -13.69,-1.907 -20.666,-1.964 -8.103,-0.066 -15.84,1.006 -23.818,2.169 -1.956,0.285 -3.915,0.684 -5.791,1.31 -0.603,0.201 -1.733,0.941 -2.373,0.941" style="fill:none;stroke:#000000;stroke-width:2px" id="path298" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g304" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 244.488,109.716 c 5.491,-1.456 11.727,3.862 14.877,7.841 1.052,1.329 2.5,2.451 3.089,4.072 0.119,0.326 0.348,1.575 0.839,1.575" style="fill:none;stroke:#000000;stroke-width:2px" id="path302" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g308" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 243.87,108.853 c 0.108,-0.316 1.562,-0.685 1.806,-0.77 2.242,-0.787 4.621,-1.132 6.998,-1.064 6.611,0.189 9.846,3.221 14.282,7.509 2.084,2.014 4.209,3.794 5.525,6.425" style="fill:none;stroke:#000000;stroke-width:2px" id="path306" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g312" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 365.487,99.46 c 1.303,-0.875 5.259,0.746 6.538,1.096 7.698,2.107 13.098,6.208 19.169,11.223 1.811,1.495 3.691,3.393 5.082,5.297 0.456,0.625 0.802,1.329 1.099,2.041 0.144,0.346 0.432,1.415 0.432,1.04" style="fill:none;stroke:#000000;stroke-width:2px" id="path310" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g316" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 366.812,92.617 c 0.227,0.354 0.81,-0.258 1.23,-0.282 0.858,-0.051 1.732,-0.037 2.59,0 2.382,0.102 4.545,0.664 6.789,1.432 8.878,3.041 15.282,9.296 19.13,17.816 0.831,1.84 3.037,5.992 2.021,8.025" style="fill:none;stroke:#000000;stroke-width:2px" id="path314" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g320" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 349.945,162.257 c -0.458,-0.115 0.872,-0.365 1.301,-0.563 0.793,-0.365 1.602,-0.699 2.414,-1.02 2.442,-0.967 4.872,-1.947 7.279,-3.002 8.208,-3.598 17.46,-8.194 23.957,-14.5 1.938,-1.88 3.896,-3.614 5.533,-5.768 0.137,-0.18 1.846,-2.068 1.197,-2.198" style="fill:none;stroke:#000000;stroke-width:2px" id="path318" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g324" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 349.164,168.429 c 0.551,0.368 2.387,-0.33 2.965,-0.436 3.281,-0.605 6.293,-2.074 9.379,-3.277 9.679,-3.773 17.328,-10.321 24.153,-17.933 2.324,-2.592 6.259,-7.012 6.259,-10.831" style="fill:none;stroke:#000000;stroke-width:2px" id="path322" /> </g> </g> </svg> </html> </p>

the server will ACK multiple packets at once, like this:

<p> <html> <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg class="margin: auto;" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" id="svg1981" width="256.83865" height="113.20025"> <metadata id="metadata1987"> <rdf:RDF> <cc:Work rdf:about=""> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> </cc:Work> </rdf:RDF> </metadata> <defs id="defs1985" /> <sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="640" inkscape:window-height="480" id="namedview1983" /> <inkscape:clipboard style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.999995px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1" min="190.98464,264.53692" max="447.82329,377.73718" /> <g id="g1989" transform="matrix(1.33333,0,0,-1.33333,-190.98464,806.46308)"> <path d="m 156.03896,583.55107 c -0.60825,-0.61501 0.0803,-3.71776 0.13125,-4.38002" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path54" /> <path d="m 160.70322,584.11732 c 0.32175,-1.82626 0.0757,-3.80476 0.2445,-5.65877" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path58" /> <path d="m 154.0087,573.39154 c -0.36975,-5.76227 9.60978,-5.82902 9.60978,-0.2145" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path62" /> <path d="m 149.20119,585.03682 c -0.0705,0.66225 -0.24225,-1.31325 -0.27075,-1.97851 -0.066,-1.515 -0.0892,-3.02475 -0.0592,-4.53976 0.0622,-3.20551 0.183,-6.41327 -0.06,-9.61427 -0.0968,-1.28026 -0.74625,-3.45526 -0.0885,-4.68827 0.6105,-1.14525 3.03676,-0.6165 4.00576,-0.564 3.73576,0.20175 7.50377,0.4155 11.24553,0.4155 0.819,0 3.33001,-0.744 3.97651,-0.17775 1.53376,1.34176 0.46725,7.34402 0.59325,9.02028 0.29175,3.86101 0.2865,7.73552 0.47475,11.60178 0.042,0.8625 0.55276,3.12526 -0.44475,3.67951 -1.2555,0.6975 -3.91951,-0.441 -5.22226,-0.534 -3.18076,-0.22725 -6.42677,-0.3225 -9.61428,-0.44475 -2.517,-0.0968 -5.13226,0.96825 -4.86601,-2.22601" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path66" /> <path d="m 147.57294,556.25399 c 0.1155,-0.1065 -1.44451,-0.078 -1.46176,-0.0795 -0.7965,-0.057 -1.473,-0.78075 -1.80975,-1.4535 -0.99675,-1.99276 0.4155,-3.36976 2.433,-3.14551" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path70" /> <path d="m 150.96595,559.41225 c 0.11175,0.2505 -0.33376,-0.47175 -0.34426,-0.74475 -0.0232,-0.609 -0.0112,-1.2315 0,-1.83976 0.036,-1.9785 0.081,-4.09501 0.56326,-6.02401" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path74" /> <path d="m 154.43696,554.84024 c -0.42601,-0.171 0.3075,-2.93926 0.36825,-3.26476" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path78" /> <path d="m 154.64396,557.66775 c 0.01,-7.5e-4 -0.27751,-0.30825 -0.34276,-0.39525" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path82" /> <path d="m 157.99196,553.28623 c -0.0637,-0.0705 1.33351,-0.0788 1.44226,-0.0788 0.78225,0 1.9965,-0.1395 2.61151,0.47476 0.735,0.735 -0.79801,1.59075 -1.27576,1.869 -0.4395,0.2565 -0.95475,0.564 -1.48425,0.564 -1.73776,0 -1.78351,-2.79976 -1.36501,-3.91651 0.74851,-1.9965 2.87326,-2.37 4.74827,-2.226" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path86" /> <path d="m 165.75074,555.12149 c 0.0547,-0.591 -0.15451,-1.284 -0.17401,-1.88476 -0.0128,-0.39225 0.004,-0.5835 0.0292,-0.97875 0.26851,-4.15501 0.0113,2.30626 0.41551,3.11551 1.73775,3.47551 3.52951,-3.57226 3.65026,-4.65826" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path90" /> <path d="m 171.80925,559.956 c -0.036,0.34875 -0.001,-0.70125 -0.001,-1.0515 0,-0.585 0.007,-1.1655 0.03,-1.75051 0.0585,-1.5495 -0.18,-8.27252 2.96701,-5.69701" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path94" /> <path d="m 169.42874,556.84349 c 0.37651,-0.438 5.13827,0.82051 5.76152,0.90376" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path98" /> <path d="m 307.14071,579.20731 c 0.64651,-4.54951 0.0802,-10.35228 -0.36,-14.94304 -0.0922,-0.96375 -0.807,-4.44976 0.25125,-5.13526 2.74201,-1.77376 8.80203,-0.0517 11.82229,0.0232 1.70325,0.042 3.50625,0.0975 5.20351,-0.0915 0.51225,-0.057 1.2945,-0.59925 1.75725,-0.228 1.00126,0.80025 0.48825,3.20551 0.411,4.24501 -0.28725,3.87601 0.21751,7.68002 0.41101,11.54853 0.06,1.19625 0.6645,3.61351 -0.66226,4.38151 -1.236,0.71625 -3.14625,0.31275 -4.49551,0.34275 -2.4525,0.054 -5.16751,0.165 -7.55477,0.70725 -1.5255,0.3465 -2.64451,0.49125 -4.19926,0.297 -0.09,-0.0113 -2.49976,-0.234 -1.87125,-0.54825" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path142" /> <path d="m 313.10848,572.64479 c -0.0915,-0.008 -0.19425,-0.099 -0.27975,-0.141" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path146" /> <path d="m 320.27325,573.04229 c -0.0705,0.0233 -0.32625,-0.29925 -0.369,-0.35625" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path150" /> <path d="m 312.41998,566.60803 c -0.243,0.0353 0.68475,-1.05676 0.72825,-1.08826 0.61125,-0.43875 1.3095,-0.837 2.03176,-1.05 1.7865,-0.52725 7.56602,-0.62775 6.45901,2.69326" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path154" /> <path d="m 302.13172,552.43724 c 0.0165,0.007 -2.74801,0.61425 -2.64526,-1.236 0.0937,-1.68526 6.07427,-2.50651 1.50675,-3.53776 -0.4425,-0.0998 -0.8715,-0.17475 -1.32375,-0.13725" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path158" /> <path d="m 305.58023,550.53373 c 0.8115,-2.208 5.66926,2.53426 1.39275,2.35651 -3.38326,-0.141 -2.39176,-5.86727 0.93525,-6.02552" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path162" /> <path d="m 311.27349,551.00474 c -0.42975,-0.42226 0.0563,-2.49376 0.14925,-2.97601 0.0128,-0.063 0.16275,-1.18801 0.15975,-1.18651 -0.4545,0.1515 -0.57,1.71001 -0.61575,2.07676 -0.27525,2.20201 0.34425,3.46576 2.64751,3.19501" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path166" /> <path d="m 316.42226,551.33249 c -0.0202,-0.61126 1.77675,-4.52402 2.2125,-4.26227 0.453,0.27151 0.654,4.19777 0.86775,4.83827" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path170" /> <path d="m 323.16627,550.07773 c 0.204,0.2865 0.66826,-0.27825 1.01926,-0.27075 0.711,0.0158 1.48425,0.141 2.076,0.56625 1.30426,0.93601 -0.132,2.29426 -1.21275,2.53426 -0.648,0.144 -1.16925,-0.372 -1.56376,-0.8085 -1.79475,-1.98901 -1.047,-4.32976 1.76551,-4.55626 1.089,-0.0878 1.97025,0.37575 2.87176,0.9165" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path174" /> <path d="m 329.31404,551.94074 c -0.0405,0.012 0.246,-1.14376 0.264,-1.20376 0.12975,-0.4455 1.16175,-3.1515 0.7545,-3.55876 -0.005,-0.005 -0.09,0.43501 -0.0945,0.47251 -0.0383,0.32175 -0.0908,0.6465 -0.12075,0.9705 -0.0945,1.00725 -0.054,2.0565 0.36375,2.99251 0.84001,1.88175 3.11626,0.87225 4.63727,0.66" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path178" /> <path d="m 195.85402,590.90693 c 0.8355,0.93301 -2.286,0.52051 -2.55375,0.3765 -2.04601,-1.10175 -1.88551,-5.75926 0.975,-5.43226 1.73025,0.198 2.3205,2.06851 2.60025,3.52876 0.63601,3.32326 -0.3345,6.53102 -1.4625,9.63378" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path326" /> <path d="m 203.39604,591.62694 c -2.70675,1.734 -5.20276,-2.64901 -2.667,-4.31327 1.43325,-0.9405 2.51775,0.62851 2.739,1.88026 0.0172,0.0975 0.066,1.85625 -0.1395,1.788 -0.83775,-0.27975 1.58101,-3.64051 1.99651,-3.90001" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path330" /> <path d="m 207.9538,597.45445 c -0.1785,0.11925 0.35401,-3.37501 0.38926,-3.54826 0.48975,-2.424 1.0215,-4.92076 1.0215,-7.40477" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path334" /> <path d="m 206.21755,592.34619 c -0.0172,0.008 1.28325,0.6765 1.359,0.70125 0.85126,0.2775 1.71451,0.44325 2.60026,0.55725" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path338" /> <path d="m 217.71283,592.73244 c 0.213,0.1425 -0.4965,0.1275 -0.73425,0.222 -0.63,0.25275 -1.338,0.3195 -1.92676,-0.0922 -1.119,-0.783 -1.4925,-2.62876 -0.975,-3.85351 1.14075,-2.70151 4.74151,0.849 3.62101,2.52976 -0.339,0.50925 0.0907,-1.23601 0.30225,-1.81051 0.41025,-1.11675 1.10925,-1.92225 2.06551,-2.59951" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path342" /> <path d="m 186.998,586.57117 c -0.0825,0.48075 -0.1335,-0.98475 -0.0352,-1.4625 0.23625,-1.1475 0.58875,-2.41276 1.3695,-3.31951 1.86526,-2.16601 5.67002,-1.88326 8.24102,-1.99651 4.97477,-0.21975 9.69603,0.2265 14.62504,0.71926 4.10926,0.411 11.67603,0.567 13.55704,5.26951 0.729,1.8225 0.783,4.12876 0.6495,6.05927 -1.02225,14.82379 -20.6483,12.55728 -30.85133,11.39778 -3.55876,-0.40425 -5.89352,-2.30101 -7.26527,-5.59427 -0.12825,-0.30675 -1.4685,-4.73551 -0.30225,-4.73551" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path346" /> <path d="m 189.51351,560.6766 c 0.0308,0.0172 0.73575,-3.83401 0.79275,-4.30351 0.069,-0.56925 0.15,-2.2875 0.15,-1.7145 0,1.5915 -0.651,5.84851 1.41375,6.40651 1.80526,0.48826 2.72476,-2.04525 2.89276,-3.36375 0.01,-0.075 0.1425,-1.60726 -0.021,-1.60726 -0.19875,0 0.147,2.08576 0.171,2.20726 0.3015,1.5075 1.3425,4.82701 3.51376,4.19926 2.83876,-0.81975 0.96525,-4.60801 2.14275,-6.25652" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path350" /> <path d="m 207.4738,561.72961 c -0.47025,1.257 -2.1855,0.8115 -2.769,-0.0427 -0.82726,-1.21201 -1.14301,-3.28876 -0.34276,-4.58552 1.17301,-1.902 3.59701,-0.0495 4.00652,1.47826 0.3375,1.2585 -0.68851,2.3145 -1.26376,3.32101" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path354" /> <path d="m 210.98231,561.08535 c 0.1185,-0.7035 0.048,-1.45125 0.10725,-2.163 0.0232,-0.2715 0.45975,-2.55826 0.10725,-2.69926 -0.5295,-0.21225 -0.777,1.79251 -0.79275,1.99276 -0.13275,1.68225 0.40125,3.64276 2.16451,4.19926" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path358" /> <path d="m 215.75158,560.3691 c 1.90275,-3.27751 7.13401,3.47176 2.23725,3.07426 -3.94651,-0.3195 -3.54451,-6.89852 0.64275,-7.11302" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path362" /> <path d="m 234.22187,561.86761 c -1.9515,1.92525 -4.87576,-1.68751 -3.97651,-4.14451 0.95101,-2.60176 3.65851,-1.43851 4.22102,0.64275 0.891,3.29776 -1.07176,6.88127 -1.07176,10.26302" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path366" /> <path d="m 240.48964,561.59611 c -1.13625,3.26475 -4.85101,-1.52551 -2.98126,-3.57301 1.47526,-1.61551 3.09751,0.996 3.34276,2.271 0.0368,0.1905 0.10125,1.41151 0.27825,1.50001 0.0172,0.008 0.4755,-1.32301 0.49275,-1.37176 0.32626,-0.8895 0.66976,-1.68825 1.47901,-2.22825" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path370" /> <path d="m 246.00291,568.45412 c -0.53476,0.18075 0.13275,-3.192 0.162,-3.33901 0.4155,-2.109 0.65025,-4.24276 0.79275,-6.38551" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path374" /> <path d="m 243.60515,563.46736 c 1.362,1.239 3.30526,1.42125 5.06701,1.56225" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path378" /> <path d="m 256.23893,564.11536 c -1.0245,-0.30225 -1.9665,1.17901 -3.11025,0.378 -0.85051,-0.59475 -2.31451,-4.65826 -0.55726,-4.73476 1.20226,-0.0525 2.39401,1.209 3.02101,2.09926 0.32775,0.46575 0.11625,1.5645 0.6855,1.5645 0.573,0 -0.002,-1.1565 0.129,-1.7145 0.258,-1.10776 1.03726,-1.97626 1.99276,-2.54926" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path382" /> <path d="m 192.03426,567.09287 c -0.3195,-0.25425 -1.60425,-0.0165 -1.9635,-0.0277 -1.55851,-0.051 -3.21826,-0.3885 -4.26376,-1.65 -4.50302,-5.43452 -2.44351,-15.5198 5.01376,-16.34855 8.76227,-0.9735 18.18755,0.35925 26.99707,0.55725 9.52728,0.21375 19.23905,-0.6765 28.71158,0.42825 6.51301,0.75976 14.61904,2.60401 16.00504,10.32753 1.2795,7.12727 -4.42126,9.10503 -10.28478,9.55653 -10.50153,0.80775 -20.2913,-0.273 -30.72533,-1.22176 -5.49526,-0.4995 -10.98153,-0.63825 -16.41229,-1.41375 -0.3975,-0.057 -4.62827,0.0248 -4.62827,-0.3645" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path386" /> <path d="m 174.68297,573.06739 c 0.6555,1.04625 4.16326,0.576 5.10301,0.5325 5.53801,-0.258 10.27278,-1.96876 12.72678,-6.87827" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path390" /> <path d="m 174.26146,574.14064 c -0.23175,-0.3375 0.78751,0.2265 1.17451,0.35925 0.65625,0.22425 1.323,0.42225 1.99275,0.6 2.25226,0.597 4.62302,0.85875 6.94202,1.02825 5.92952,0.43351 8.52602,-1.73625 12.81304,-5.12101 1.57575,-1.24425 3.94276,-3.07276 3.94276,-5.29201" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path394" /> <path d="m 173.18896,578.4464 c 2.23051,3.27901 6.68627,6.33827 10.68903,7.60202 0.69675,0.2205 2.79751,1.248 3.45001,0.92175" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path398" /> <path d="m 173.56321,578.64965 c 0.09,-0.0255 0.85951,1.42425 0.93001,1.57126 0.84525,1.761 1.4445,3.6225 2.35725,5.35651 1.75276,3.33001 6.67877,6.70502 10.41303,7.32752" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path402" /> <path d="m 234.15137,528.02452 c 1.22851,0.99825 1.88176,5.85076 2.13751,7.69652 0.078,0.56325 0.036,2.50725 0.64275,2.871 0.4095,0.246 1.32601,-2.84475 1.39276,-3.06375 0.27975,-0.91276 0.49575,-1.85026 0.6855,-2.78551 0.2805,-1.38076 0.72825,-2.97076 0.72825,-4.39201" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path406" /> <path d="m 236.29713,532.34678 c -0.0195,-0.021 0.66675,-0.0187 0.72,-0.0113 0.5985,0.0855 1.19176,0.24525 1.77826,0.38625" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path410" /> <path d="m 246.94041,537.23154 c -1.18125,-0.28875 -1.92301,0.489 -2.87401,-0.71775 -2.64151,-3.35251 -1.12125,-8.64002 3.66451,-6.53477" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path414" /> <path d="m 250.92217,538.03329 c 0.10575,0.1725 -0.38475,-0.267 -0.38475,-0.4695 0,-0.62625 0.0998,-1.26225 0.15,-1.8855 0.1545,-1.92826 0.0435,-4.23451 0.57825,-6.10652" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path418" /> <path d="m 251.14642,532.12403 c 0.64425,2.427 2.77351,3.62326 4.94026,4.86151" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path422" /> <path d="m 252.25192,534.32303 c -0.17325,-0.576 0.849,-1.15575 1.19926,-1.4085 1.61325,-1.16325 3.2985,-2.43301 5.05651,-3.36376" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path426" /> <path d="m 264.23995,530.47477 c 2.16451,-6.20101 -3.123,-7.70852 -7.85327,-8.63777 -6.83626,-1.34325 -14.94604,-2.06626 -21.3833,1.221 -2.70376,1.38076 -5.31002,3.16801 -5.61377,6.38552 -0.32325,3.42451 -0.3615,7.97627 1.45726,11.03403 3.39225,5.70676 13.83828,5.61451 19.4333,4.37101 5.20126,-1.15575 12.98478,-1.8945 12.98478,-9.19127" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path430" /> <path d="m 264.74996,536.39754 c 7.25027,3.92926 13.78803,9.52052 19.64105,15.26479 2.39025,2.34601 5.47351,4.94776 7.00652,8.01377" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path434" /> <path d="m 264.84896,530.56027 c -0.2985,-0.3285 0.74625,0.47925 1.11525,0.726 0.86625,0.57751 1.70175,1.19626 2.55001,1.79926 2.3355,1.662 4.50676,3.43801 6.70651,5.27101 7.15727,5.96477 12.44404,12.84754 16.49855,20.95506" style="clip-rule:evenodd;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" id="path438" /> </g> </svg> </html> </p>

<p> By itself, this is fine. It sends less ACKs! That means less packets! Great! </p>

<p> But delayed ACKs can combine poorly with another TCP optimization called <a href="https://en.wikipedia.org/wiki/Nagle%27s_algorithm">Nagle's algorithm</a>. The idea behind Nagle's algorithm is -- if you haven't received an ACK, maybe that's because the connection is congested! So if a packet hasn't been ACKed and a connection is using Nagle's algorithm, it'll wait to send more data. Like this: </p>

<p> <html> <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" id="svg1231" width="263.4487" height="130.13521"> <metadata id="metadata1237"> <rdf:RDF> <cc:Work rdf:about=""> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> </cc:Work> </rdf:RDF> </metadata> <defs id="defs1235" /> <sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="640" inkscape:window-height="480" id="namedview1233" /> <inkscape:clipboard style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke-width:1.00000017;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1" min="421.91708,392.50327" max="685.36578,522.63847" /> <g id="g1239" transform="matrix(1.33333,0,0,-1.33333,-421.91708,678.49673)"> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g916" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 430.242,430.366 c -0.546,-1.239 0.011,8.996 0.1,10.444 0.348,5.633 -0.429,14.366 2.19,19.604 1.05,2.1 4.529,1.528 6.413,1.408 5.922,-0.378 11.582,-1.705 17.571,-1.46 1.226,0.05 5.859,1.77 6.726,0.73 2.655,-3.186 1.345,-11.5 1.251,-15.172 -0.137,-5.361 -0.591,-10.702 -0.782,-16.059 -0.049,-1.377 0.418,-4.498 -1.251,-5.214 -2.305,-0.987 -5.537,-0.767 -7.978,-0.886 -2.109,-0.103 -4.2,10e-4 -6.308,0.104 -3.979,0.194 -22.088,-1.834 -20.334,6.935" style="fill:none;stroke:#000000;stroke-width:2px" id="path914" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g920" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 441.493,432.693 c 0.685,1.709 0.564,4.547 0.871,6.391" style="fill:none;stroke:#000000;stroke-width:2px" id="path918" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g924" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 448.376,432.374 c 0.213,0.096 0.795,5.639 0.855,6.079" style="fill:none;stroke:#000000;stroke-width:2px" id="path922" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g928" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 438.621,445.343 c 0.48,0.054 0.301,0.929 0.559,1.338 0.73,1.156 1.639,2.207 2.72,3.052 4.167,3.258 11.465,1.793 10.848,-4.379" style="fill:none;stroke:#000000;stroke-width:2px" id="path926" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g932" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 428.315,474.407 c -1.658,0.245 -3.358,0.233 -4.495,1.732 -2.829,3.73 1.242,7.478 5.109,6.469" style="fill:none;stroke:#000000;stroke-width:2px" id="path930" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g936" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 432.376,468.662 c -0.383,-0.25 -0.049,0.918 0.003,1.373 0.122,1.078 0.319,2.149 0.497,3.218 0.516,3.093 0.584,6.339 1.261,9.388" style="fill:none;stroke:#000000;stroke-width:2px" id="path934" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g940" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 437.381,476.991 c -1.259,0.239 0.615,2.492 0.803,3.759" style="fill:none;stroke:#000000;stroke-width:2px" id="path938" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g944" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 437.221,472.299 c -0.094,0.012 -0.177,0.055 -0.264,0.092" style="fill:none;stroke:#000000;stroke-width:2px" id="path942" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g948" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 442.973,477.254 c 1.61,3.44 4.56,-4.737 1.116,-3.138 -4.222,1.96 -0.638,8.833 3.218,8.658" style="fill:none;stroke:#000000;stroke-width:2px" id="path946" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g952" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 451.749,476.357 c -0.138,0.64 -0.249,1.288 -0.328,1.939 -0.091,0.751 -0.13,1.471 0,2.222 0.07,0.407 0.35,1.566 0.431,1.161 0.28,-1.399 0.624,-11.959 4.578,-6.369 0.346,0.489 0.643,1.055 0.829,1.625 0.153,0.468 0.33,1.438 0.399,1.925 0.149,1.062 0.142,2.118 0.199,3.184" style="fill:none;stroke:#000000;stroke-width:2px" id="path950" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g956" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 462.534,467.137 c 0.1,0.018 0.357,2.684 0.365,2.732 0.623,3.585 1.232,7.152 1.526,10.782" style="fill:none;stroke:#000000;stroke-width:2px" id="path954" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g960" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 459.422,474.488 c 1.709,-1.353 5.878,-1.746 7.922,-2.33" style="fill:none;stroke:#000000;stroke-width:2px" id="path958" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g964" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 501.15,412.164 c -0.161,-0.141 -1.387,-1.349 -0.935,-1.349" style="fill:none;stroke:#000000;stroke-width:2px" id="path962" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g968" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 501.466,411.245 c -0.338,-1.271 -3.366,-0.306 -3.869,0.057 -2.62,1.892 -4.434,9.791 0.56,9.716 6.545,-0.098 4.828,-8.615 3.72,-12.352 -0.359,-1.209 -0.741,-2.41 -1.12,-3.612 -0.339,-1.076 -0.782,-2.174 -0.885,-3.305" style="fill:none;stroke:#000000;stroke-width:2px" id="path966" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g972" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 513.693,412.994 c -0.364,-1.678 -2.402,-1.688 -3.581,-0.825 -1.767,1.294 -2.966,5.236 -1.391,7.061 1.693,1.962 4.055,-1.289 4.497,-2.709 0.261,-0.841 0.354,-1.691 0.415,-2.564 0.023,-0.332 -0.058,-1.291 0.09,-0.993 1.093,2.184 0.214,5.58 2.511,7.187" style="fill:none;stroke:#000000;stroke-width:2px" id="path970" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g976" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 519.544,405.404 c -0.421,-0.61 0.618,4.302 0.699,4.869 0.415,2.906 0.7,5.897 0.433,8.831" style="fill:none;stroke:#000000;stroke-width:2px" id="path974" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g980" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 516.875,411.43 c 0.223,-1.222 4.29,-1.492 5.137,-1.627" style="fill:none;stroke:#000000;stroke-width:2px" id="path978" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g984" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 533.122,411.331 c 0.275,0.063 -0.499,-0.273 -0.708,-0.462 -0.57,-0.519 -1.307,-0.871 -2.094,-0.632 -1.931,0.586 -3.421,3.53 -2.926,5.436 0.366,1.41 1.907,1.564 3.052,1.065 1.426,-0.621 2.77,-2.482 2.944,-4.045 0.028,-0.258 -0.137,0.502 -0.181,0.758 -0.145,0.843 -0.23,1.672 -0.145,2.529 0.193,1.922 1.08,3.199 2.619,4.298" style="fill:none;stroke:#000000;stroke-width:2px" id="path982" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g988" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 488.164,420.269 c -0.556,1.13 -0.152,2.723 0.078,3.873 0.808,4.04 2.512,6.53 6.7,7.386 3.69,0.755 7.533,0.26 11.269,0.361 7.612,0.206 15.213,0.037 22.826,0.037 3.851,0 9.939,1.1 13.418,-1.03 1.837,-1.125 2.491,-3.696 3.052,-5.616 1.549,-5.301 2.743,-11.049 1.553,-16.542 -0.98,-4.522 -3.413,-6.123 -6.916,-8.686 -9.006,-6.59 -21.563,-6.484 -32.236,-6.484 -4.612,0 -10.577,-0.561 -14.645,2.186 -2.767,1.867 -4.833,6.035 -5.292,9.318 -0.226,1.625 0.447,4.059 -0.433,5.526 -0.754,1.257 -4.208,1.795 -5.472,2.348 -3.466,1.516 -6.569,3.5 -9.228,6.212 -1.906,1.944 -3.06,4.097 -3.864,6.682 -0.041,0.132 -0.61,2.293 -0.596,2.293 0.35,0 0.93,-1.04 1.101,-1.264 0.825,-1.076 1.792,-2.08 2.854,-2.925 3.345,-2.664 9.523,-4.365 13.598,-2.619" style="fill:none;stroke:#000000;stroke-width:2px" id="path986" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g992" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 502.693,452.525 c -0.076,-0.335 0.229,2.396 0.263,2.718 0.173,1.611 0.296,3.224 0.336,4.843 0.012,0.447 0.02,0.632 0,1.055 -0.009,0.218 0.062,0.803 -0.092,0.648 -0.325,-0.325 -0.109,-1.924 -0.104,-2.328 0.021,-2.105 0.807,-4.947 3.313,-2.781 0.329,0.284 0.607,0.611 0.846,0.973 0.361,0.548 0.602,1.149 0.753,1.785 0.217,0.912 0.231,1.818 0.151,2.745" style="fill:none;stroke:#000000;stroke-width:2px" id="path990" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g996" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 511.135,457.736 c 0.062,0.648 0.029,1.305 0.082,1.956 0.023,0.281 0.064,0.735 0.093,1.02 0.035,0.344 0.089,0.686 0.116,1.031 0.01,0.135 0.084,0.501 -0.012,0.406 -0.233,-0.233 -0.185,-1.046 -0.185,-1.333 0,-1.158 -0.021,-3.799 1.089,-4.53 1.589,-1.046 2.877,2.641 3.047,3.603 0.018,0.104 0.244,1.588 0.012,1.588 -0.157,0 0.062,-1.633 0.081,-1.75 0.184,-1.172 0.632,-3.25 2.131,-3.348 2.242,-0.146 2.462,3.418 2.63,4.935" style="fill:none;stroke:#000000;stroke-width:2px" id="path994" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1000" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 522.541,456.318 c 0.036,0.005 0.098,1.256 0.1,1.277 0.101,1.056 0.235,2.108 0.336,3.163 0.005,0.051 0.147,1.05 -0.012,1.089 -0.075,0.019 -0.007,-1.87 0,-1.969 0.075,-1.056 0.149,-3.513 1.379,-3.974 1.515,-0.568 2.104,3.051 2.201,3.881 0.009,0.074 -0.04,1.744 -0.127,1.657 -0.319,-0.319 0.385,-2.017 0.475,-2.329 0.565,-1.955 2.439,-5.512 4.6,-2.653 0.275,0.365 0.483,0.756 0.648,1.182 0.322,0.826 0.444,1.707 0.533,2.583" style="fill:none;stroke:#000000;stroke-width:2px" id="path998" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1004" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 539.629,461.324 c 0.857,0.476 -0.178,2.373 -0.467,2.806" style="fill:none;stroke:#000000;stroke-width:2px" id="path1002" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1008" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 547.795,451.053 c -0.005,-0.209 0.589,2.567 0.636,3.09 0.165,1.838 0.238,3.693 0.174,5.538" style="fill:none;stroke:#000000;stroke-width:2px" id="path1006" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1012" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 548.76,455.388 c 0.067,-0.725 1.232,-0.715 1.722,-0.631 1.708,0.293 3.393,1.559 4.067,3.174 1.253,3.008 -5.259,4.24 -6.697,2.213" style="fill:none;stroke:#000000;stroke-width:2px" id="path1010" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1016" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 558.234,457.633 c 0.837,0.713 3.963,0.114 4.459,-0.849 0.437,-0.847 -1.304,-2.479 -2.05,-2.514 -2.047,-0.094 -3.187,3.517 -2.48,5.029 0.662,1.414 2.398,1.506 3.743,1.506" style="fill:none;stroke:#000000;stroke-width:2px" id="path1014" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1020" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 568.738,449.562 c -0.165,3.575 1.139,7.142 1.139,10.733" style="fill:none;stroke:#000000;stroke-width:2px" id="path1018" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1024" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 565.967,455.167 c 1.642,-0.413 3.252,-0.774 4.941,-1.013" style="fill:none;stroke:#000000;stroke-width:2px" id="path1022" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1028" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 578.082,448.688 c -0.5,0.749 -0.127,2.393 -0.084,3.196 0.152,2.774 0.427,5.596 0.348,8.376" style="fill:none;stroke:#000000;stroke-width:2px" id="path1026" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1032" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 574.759,455.324 c 0.838,-0.87 2.787,-0.78 3.865,-0.822" style="fill:none;stroke:#000000;stroke-width:2px" id="path1030" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1036" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 583.561,456.842 c 0.16,0.335 0.948,-0.011 1.204,-0.092 0.591,-0.189 1.319,-0.499 1.529,-1.147 0.297,-0.917 -0.595,-2.1 -1.541,-2.028 -1.802,0.137 -4.817,3.08 -3.731,5.028 0.624,1.12 2.234,1.512 3.395,1.657" style="fill:none;stroke:#000000;stroke-width:2px" id="path1034" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1040" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 589.785,456.658 c -0.422,1.06 -0.282,1.955 -0.282,3.034 0,0.176 -0.132,-0.327 -0.174,-0.498 -0.07,-0.292 -0.081,-0.604 -0.092,-0.903 -0.039,-0.999 0.192,-2.194 0.903,-2.943 0.953,-1.003 2.531,-0.639 3.743,-0.498" style="fill:none;stroke:#000000;stroke-width:2px" id="path1038" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1044" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 606.367,453.951 c -0.092,0.059 -0.417,-0.038 -0.463,0.039 -0.07,0.117 0.38,1.085 0.409,1.177 0.375,1.221 0.715,4.336 2.053,4.948 1.199,0.548 1.538,-2.416 2.486,-2.534 1.074,-0.135 1.079,2.983 2.522,2.486 0.595,-0.205 0.804,-1.035 0.889,-1.574 0.263,-1.676 -0.017,-3.441 0.396,-5.092" style="fill:none;stroke:#000000;stroke-width:2px" id="path1042" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1048" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 621.645,454.829 c -0.385,-0.278 -0.634,-0.847 -1.161,-0.863 -1.961,-0.059 -3.796,4.196 -2.618,5.608 1.054,1.265 3.069,-0.574 3.662,-1.429 0.295,-0.425 0.512,-0.899 0.697,-1.381 0.011,-0.028 0.357,-1.043 0.372,-1.033 0.171,0.114 0.08,1.355 0.108,1.55 0.141,0.961 0.526,1.569 1.345,2.077" style="fill:none;stroke:#000000;stroke-width:2px" id="path1046" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1052" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 628.02,455.612 c 0.042,-0.07 -0.033,0.456 -0.031,0.528 0.005,0.153 0.054,0.898 0.06,0.996 0.068,0.988 0.111,2.064 0.457,3.003" style="fill:none;stroke:#000000;stroke-width:2px" id="path1050" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1056" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 628.611,451.977 c -0.06,0.009 -0.12,0.022 -0.18,0.034" style="fill:none;stroke:#000000;stroke-width:2px" id="path1054" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1060" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 634.471,447.312 c -0.205,0.026 0.137,2.595 0.148,2.715 0.279,3.122 0.72,6.608 0.372,9.739" style="fill:none;stroke:#000000;stroke-width:2px" id="path1058" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1064" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 631.875,454.486 c 1.638,-0.649 3.883,-0.379 5.59,-0.412" style="fill:none;stroke:#000000;stroke-width:2px" id="path1062" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1080" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 526.732,471.443 c -1.482,-1.581 -4.098,-1.206 -4.271,1.206 -0.245,3.397 2.05,6.733 1.326,10.114" style="fill:none;stroke:#000000;stroke-width:2px" id="path1078" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1084" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 520.444,478.502 c 1.392,-0.92 2.841,-1.332 4.499,-1.664" style="fill:none;stroke:#000000;stroke-width:2px" id="path1082" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1088" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 531.922,477.113 c -0.071,0.33 -1.804,-0.148 -2.028,-0.12 -1.085,0.136 -1.664,0.946 -1.918,1.961 -0.253,1.011 -0.312,2.427 0.395,3.287 1.279,1.557 3.504,-0.389 3.907,-1.749 0.356,-1.197 -0.35,-2.421 -0.747,-3.513" style="fill:none;stroke:#000000;stroke-width:2px" id="path1086" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1092" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 535.62,480.553 c 0.032,0.59 -10e-4,1.182 0.03,1.772 0.018,0.346 0.371,1.275 0.127,1.03 -1.488,-1.488 -0.163,-5.889 1.015,-7.025" style="fill:none;stroke:#000000;stroke-width:2px" id="path1090" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,-4.5000114,803.252)" id="g1100" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 559.573,476.374 c 0.01,0.017 -1.675,-0.908 -2.806,-0.283 -1.536,0.848 -2.251,3.533 -1.467,5.078 1.306,2.574 5.573,-1.746 4.626,-3.64 -0.075,-0.151 -0.037,0.339 -0.028,0.508 0.024,0.443 0.03,0.582 0.099,1.044 0.178,1.193 0.43,2.373 1.326,3.23" style="fill:none;stroke:#000000;stroke-width:2px" id="path1098" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,-4.5000114,803.252)" id="g1104" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 564.326,478.356 c 0.007,0.519 0.002,1.038 0.002,1.557 v 1.03 c 0,0.164 -0.091,-0.114 -0.085,-0.296 0.032,-0.962 0.214,-1.948 0.663,-2.807 0.224,-0.43 0.495,-0.82 0.846,-1.157 2.614,-2.504 4.236,2.156 4.401,4.091" style="fill:none;stroke:#000000;stroke-width:2px" id="path1102" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,-4.5000114,803.252)" id="g1108" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 582.114,481.415 c -0.07,-1.018 0.791,-2.158 1.172,-3.039 0.677,-1.568 1.04,-3.193 1.411,-4.853 0.115,-0.518 0.357,-2.767 1.199,-2.821 0.85,-0.055 1.29,2.321 1.439,2.807 0.744,2.443 1.93,5.184 2.059,7.758" style="fill:none;stroke:#000000;stroke-width:2px" id="path1106" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,-4.5000114,803.252)" id="g1112" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 584.548,477.438 c 0.725,-0.31 1.903,-0.268 2.688,-0.459" style="fill:none;stroke:#000000;stroke-width:2px" id="path1110" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,-4.5000114,803.252)" id="g1116" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 598.379,472.417 c -0.63,-0.27 -1.258,-1.163 -1.96,-1.066 -2.966,0.409 -4.496,5.839 -3.16,8.111 0.941,1.6 3.257,1.865 4.895,1.636" style="fill:none;stroke:#000000;stroke-width:2px" id="path1114" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,-4.5000114,803.252)" id="g1120" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 606.607,470.254 c -0.85,0.676 -0.936,1.979 -1.019,2.973 -0.21,2.517 -0.127,5.066 -0.127,7.589" style="fill:none;stroke:#000000;stroke-width:2px" id="path1118" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,-4.5000114,803.252)" id="g1124" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 606.574,478.076 c 0.812,-2.535 4.39,-3.381 6.617,-4.101" style="fill:none;stroke:#000000;stroke-width:2px" id="path1122" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,-4.5000114,803.252)" id="g1128" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 614.105,473.561 c -0.166,0.008 -0.342,0.074 -0.505,0.103" style="fill:none;stroke:#000000;stroke-width:2px" id="path1126" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,-4.5000114,803.252)" id="g1132" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 608.075,475.745 c -0.28,2.696 2.98,3.925 5.088,5.029" style="fill:none;stroke:#000000;stroke-width:2px" id="path1130" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,-4.5000114,803.252)" id="g1136" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 625.931,470.757 c -0.062,2.395 0.312,4.806 0.385,7.2" style="fill:none;stroke:#000000;stroke-width:2px" id="path1134" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,-4.5000114,803.252)" id="g1140" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 626.367,474.725 c 0.16,-1.491 3.053,-0.144 3.545,0.193 1.105,0.757 2.437,2.235 2.026,3.71 -0.509,1.828 -4.103,2.419 -5.406,1.309" style="fill:none;stroke:#000000;stroke-width:2px" id="path1138" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,-4.5000114,803.252)" id="g1144" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 635.799,477.121 c 0.934,0.27 2.677,-0.39 2.979,-1.372 0.282,-0.916 -0.916,-1.799 -1.719,-1.764 -2.003,0.086 -3.209,3.418 -2.185,4.95 0.838,1.254 2.718,0.985 3.983,0.854" style="fill:none;stroke:#000000;stroke-width:2px" id="path1142" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,-4.5000114,803.252)" id="g1148" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 647.998,468.062 c -0.591,0.027 -1.288,-0.14 -1.834,0.164 -1.23,0.686 -1.222,2.533 -1.093,3.722 0.259,2.38 1.872,5.481 0.945,7.841" style="fill:none;stroke:#000000;stroke-width:2px" id="path1146" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,-4.5000114,803.252)" id="g1152" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 643.042,474.273 c 1.687,-0.51 3.174,-0.886 4.965,-0.982" style="fill:none;stroke:#000000;stroke-width:2px" id="path1150" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,-4.5000114,803.252)" id="g1156" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 655.251,474.002 c -0.847,-0.111 -1.556,-0.557 -2.429,-0.12 -1.283,0.642 -3.101,3.586 -1.514,4.735 1.039,0.752 4.43,0.357 4.746,-1.184 0.173,-0.848 -0.319,-1.831 -0.535,-2.629 -0.036,-0.132 -0.348,-1.485 -0.262,-1.457" style="fill:none;stroke:#000000;stroke-width:2px" id="path1154" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,-4.5000114,803.252)" id="g1160" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 659.573,476.08 c -0.014,0.516 -0.069,1.031 -0.094,1.547 -0.022,0.462 -0.023,0.925 -0.023,1.388 0,0.034 -0.012,0.789 -0.022,0.785 -0.389,-0.129 -0.598,-2.193 -0.626,-2.492 -0.183,-1.919 1.279,-6.674 3.96,-5.816" style="fill:none;stroke:#000000;stroke-width:2px" id="path1158" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,-4.5000114,803.252)" id="g1164" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 666.689,475.467 c 0.142,0.317 0.843,0.259 1.11,0.259 1.051,0 2.514,-0.002 3.095,-1.081 0.27,-0.501 0.486,-1.631 -0.228,-1.901 -2.196,-0.831 -5.552,2.367 -4.734,4.53 1.005,2.656 4.594,2.593 6.885,2.481" style="fill:none;stroke:#000000;stroke-width:2px" id="path1162" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1168" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 505.845,498.736 c 1.655,-1.797 5.833,-2.821 8.074,-3.534" style="fill:none;stroke:#000000;stroke-width:2px" id="path1166" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1172" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 510.283,497.629 c -0.698,1.005 -0.165,2.606 -0.07,3.717 0.185,2.186 -0.013,4.349 -0.578,6.466" style="fill:none;stroke:#000000;stroke-width:2px" id="path1170" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1176" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 507.196,508.093 c -0.241,-0.31 1.054,-0.421 1.091,-0.425 1.744,-0.212 3.492,-0.282 5.231,-0.546" style="fill:none;stroke:#000000;stroke-width:2px" id="path1174" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1180" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 526.881,500.75 c 0.183,-0.141 -1.259,-0.528 -1.427,-0.495 -1.013,0.203 -2.142,1.144 -2.069,2.263 0.133,2.038 7.206,3.105 2.984,4.941 -0.4,0.174 -0.75,0.291 -1.171,0.401 -0.691,0.18 -1.321,0.263 -2.022,0.128" style="fill:none;stroke:#000000;stroke-width:2px" id="path1178" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1184" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 531.584,503.81 c 0.104,0.505 0.971,0.328 1.299,0.248 2.053,-0.503 3.766,-2.237 0.946,-3 -0.383,-0.104 -0.788,-0.177 -1.187,-0.113 -4.085,0.654 -3.001,7.374 1.011,7.557" style="fill:none;stroke:#000000;stroke-width:2px" id="path1182" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1188" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 538.277,503.289 c -0.243,0.704 -0.353,1.44 -0.421,2.181 -0.05,0.548 -0.044,0.485 -0.064,1.075 -0.02,0.613 -0.278,0.057 -0.289,-0.594 -0.022,-1.336 0.213,-2.935 1.236,-3.899 0.97,-0.914 2.185,-0.469 3,0.417 1.337,1.455 1.57,3.474 1.267,5.343" style="fill:none;stroke:#000000;stroke-width:2px" id="path1186" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1192" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 552.711,503.122 c -1.128,-0.534 -2.08,-1.542 -3.448,-1.086 -1.859,0.62 -3.724,4.17 -2.326,5.872 1.433,1.744 4.41,0.208 5.166,-1.428 0.806,-1.741 -0.028,-4.152 -0.337,-5.92 -0.363,-2.081 -0.642,-4.173 -0.866,-6.273" style="fill:none;stroke:#000000;stroke-width:2px" id="path1190" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1196" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 562.462,501.733 c 0.055,-0.034 0.13,1.129 0.134,1.17 0.107,1.056 0.243,2.109 0.385,3.16 0.049,0.364 0.096,0.728 0.144,1.091 0.019,0.144 0.084,0.574 0.048,0.433 -0.417,-1.668 0.148,-5.626 2.198,-5.968 1.751,-0.292 2.761,2.406 3.033,3.69 0.039,0.185 0.304,1.651 -0.145,1.701 -0.405,0.045 0.328,-2.296 0.369,-2.407 0.476,-1.268 1.482,-3.667 3.241,-3.337 2.572,0.482 1.773,4.565 1.572,6.305" style="fill:none;stroke:#000000;stroke-width:2px" id="path1194" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1200" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 582.389,502.585 c -2.596,-1.931 -6.889,0.559 -5.482,4.008 0.86,2.109 4.568,2.152 5.695,0.272 0.775,-1.291 0.097,-3.108 -0.272,-4.428" style="fill:none;stroke:#000000;stroke-width:2px" id="path1198" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1204" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 587.31,503.401 c -0.014,0.557 -0.151,1.107 -0.151,1.667 0,0.258 0.403,2.495 0.064,2.551 -0.32,0.054 -0.344,-2.144 -0.337,-2.326 0.072,-1.837 1.116,-5.321 3.45,-5.118" style="fill:none;stroke:#000000;stroke-width:2px" id="path1202" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1208" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 594.003,502.637 c 0.744,1.392 4.52,0.656 5.365,-0.136 0.629,-0.588 0.747,-1.746 -0.048,-2.262 -1.602,-1.039 -3.882,0.462 -4.621,1.893 -1.823,3.535 0.59,6.53 4.092,6.386" style="fill:none;stroke:#000000;stroke-width:2px" id="path1206" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0.136055,803.592)" id="g1212" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 499.854,444.522 c -4.548,2.312 -8.671,7.627 -9.109,12.758 -0.229,2.69 2.228,9.092 6.197,7.505 0.183,-0.073 -0.395,0.037 -0.579,0.107 -0.239,0.092 -0.919,0.431 -1.093,0.536 -0.905,0.546 -1.697,1.276 -2.423,2.037 -2.129,2.231 -3.739,5.025 -4.503,8.02 -1.143,4.478 -0.581,9.712 3.666,12.33 0.886,0.546 3.683,0.885 4.268,1.587 0.064,0.077 -2.19,2.467 -2.316,2.637 -1.174,1.581 -2.034,3.339 -2.509,5.254 -1.786,7.198 1.684,14.837 8.234,18.334 3.074,1.641 6.576,1.874 9.821,0.6 1.04,-0.408 3.319,-2.573 4.353,-2.573 0.041,0 1.04,1.363 1.094,1.415 1.457,1.428 3.173,2.675 4.953,3.667 5.06,2.819 11.014,3.242 16.64,2.273 3.737,-0.644 7.468,-1.922 10.571,-4.139 1.525,-1.089 3.527,-3.646 5.597,-3.602 2.038,0.043 3.925,2.724 5.382,3.86 2.901,2.259 6.244,3.573 9.886,4.031 3.896,0.49 8.344,0.553 12.094,-0.772 2.482,-0.877 5.278,-4.177 7.955,-4.117 1.929,0.043 3.859,2.453 5.425,3.367 2.383,1.39 5.078,2.025 7.806,2.273 4.879,0.443 10.472,0.148 15.01,-1.845 3.174,-1.393 5.882,-4.465 9.242,-5.339 1.875,-0.488 3.605,1.39 5.146,2.144 2.88,1.409 6.151,1.823 9.328,1.694 5.527,-0.224 10.397,-2.33 14.324,-6.218 1.49,-1.475 2.66,-4.139 4.31,-5.34 0.392,-0.285 1.724,0.256 2.123,0.322 1.994,0.328 4.032,0.378 6.047,0.279 7.453,-0.368 13.645,-4.464 15.932,-11.772 0.611,-1.952 0.884,-4.112 -0.407,-5.854 -0.559,-0.755 -2.392,-1.746 -2.273,-2.852 0.126,-1.179 1.212,-2.414 1.673,-3.474 1.33,-3.061 2.829,-7.207 2.38,-10.593 -0.627,-4.724 -6.531,-2.208 -8.063,-5.361 -1.057,-2.177 -1.163,-4.772 -2.123,-7.012 -2.078,-4.849 -6.515,-7.735 -11.3,-9.542 -2.203,-0.832 -4.482,-1.297 -6.819,-1.544 -1.233,-0.13 -2.913,0.076 -4.01,-0.643 -1.541,-1.01 -2.525,-3.279 -3.817,-4.589 -3.007,-3.049 -6.819,-4.61 -11.043,-5.082 -6.216,-0.695 -11.892,2.582 -17.862,2.208 -1.999,-0.125 -3.729,-1.699 -5.469,-2.53 -2.663,-1.272 -5.612,-1.766 -8.555,-1.501 -3.191,0.288 -6.227,1.38 -9.092,2.766 -1.455,0.704 -3.417,2.406 -5.104,2.466 -1.41,0.051 -2.923,-1.337 -4.181,-1.822 -2.2,-0.848 -4.692,-1.117 -7.034,-0.987 -3.198,0.178 -6.134,1.174 -8.899,2.766 -1.544,0.89 -3.287,2.729 -5.082,3.088 -1.234,0.247 -2.926,-1.859 -3.924,-2.38 -2.488,-1.3 -5.464,-1.461 -8.191,-0.986 -2.945,0.512 -5.542,1.875 -8.02,3.495 -0.302,0.198 -2.096,1.802 -2.53,1.694 -0.059,-0.015 -0.287,-1.177 -0.322,-1.265 -0.274,-0.705 -0.694,-1.301 -1.265,-1.802 -1.971,-1.729 -4.888,-2.047 -7.398,-1.758 -2.411,0.278 -4.586,1.219 -6.283,2.981 -0.136,0.141 -1.712,1.826 -1.415,2.123 0.651,0.651 1.061,-2.41 0.643,-3.024 -1.331,-1.957 -3.949,-2.903 -6.175,-3.281 -6.827,-1.157 -16.296,-2.606 -20.912,2.982 z" style="fill:none;stroke:#000000;stroke-width:2px" id="path1210" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1216" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 471.585,439.073 c 2.543,-2.342 5.855,2.365 4.343,4.805 -2.468,3.981 -6.929,-0.282 -4.718,-3.967" style="fill:none;stroke:#000000;stroke-width:2px" id="path1214" /> </g> <g transform="matrix(0.750002,0,0,-0.750002,0,803.252)" id="g1220" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"> <path d="m 482.152,439.905 c 1.283,-3.321 7.856,0.805 5.698,3.887 -3.427,4.896 -9.283,-1.425 -4.588,-4.675" style="fill:none;stroke:#000000;stroke-width:2px" id="path1218" /> </g> </g> </svg> </html> </p>

The result is exactly the behaviour we've been seeing in this bug:

<ol> <li> The client opens the connection. </li> <li> The client sends some data (the start of a POST request) </li> <li> The server waits to ACK (because it's using delayed ACKs) </li> <li> The client waits to send more packets (because it's using Nagle's algorithm) </li> <li> Oh no! The server is waiting for the client and client is waiting for the server! We're stuck!!!! </li> <li> After 40ms (that number we've been seeing everywhere!!), the server finally gives up and sends an ACK packet</li> <li> The client sends more data and everything continues </li> </ol>

<div class="nav"> [[Figure out what to do about it->What to do]] </div><p> You ssh to the server to do some more investigation. </p>

<div class="nav"> [[Use strace -> strace server]] [[Look at top -> top]] [[Go back -> Reproduce]] </div><p> You run <code>htop</code> to see if the server is using a lot of CPU. </p>

<pre> $ htop <br> CPU[| 0.7%] Tasks: 31, 23 thr; 1 running <br> Mem[|||||||||||||||||||||||||||||||||||||||||||||||||||||||| 152M/981M] Load average: 0.00 0.00 0.00 <br> Swp[ 0K/0K] Uptime: 17 days, 21:00:01 <br> <br> PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command <br> 99525 root 20 0 8384 4056 3172 R 0.7 0.4 0:00.04 htop <br> 1 root 20 0 164M 10792 6104 S 0.0 1.1 0:32.69 /sbin/init <br> 328 root 19 -1 43508 10420 9164 S 0.0 1.0 0:26.54 /lib/systemd/systemd-journald <br> 425 root RT 0 273M 17980 8188 S 0.0 1.8 0:15.93 /sbin/multipathd -d -s <br> 426 root RT 0 273M 17980 8188 S 0.0 1.8 0:00.00 /sbin/multipathd -d -s <br> 427 root RT 0 273M 17980 8188 S 0.0 1.8 0:02.51 /sbin/multipathd -d -s <br> 428 root RT 0 273M 17980 8188 S 0.0 1.8 1:29.70 /sbin/multipathd -d -s <br> 429 root RT 0 273M 17980 8188 S 0.0 1.8 0:00.00 /sbin/multipathd -d -s <br> 430 root RT 0 273M 17980 8188 S 0.0 1.8 0:00.00 /sbin/multipathd -d -s <br> 424 root RT 0 273M 17980 8188 S 0.0 1.8 2:07.36 /sbin/multipathd -d -s <br> 449 systemd-t 20 0 90396 4104 3232 S 0.0 0.4 0:00.00 /lib/systemd/systemd-timesyncd <br> 446 systemd-t 20 0 90396 4104 3232 S 0.0 0.4 0:02.51 /lib/systemd/systemd-timesyncd <br> 491 systemd-n 20 0 18680 4892 3852 S 0.0 0.5 0:11.27 /lib/systemd/systemd-networkd <br> 494 systemd-r 20 0 24052 9652 5528 S 0.0 1.0 0:02.52 /lib/systemd/systemd-resolved <br> 540 root 20 0 18976 4348 2972 S 0.0 0.4 0:06.09 /lib/systemd/systemd-udevd <br> 656 root 20 0 8536 2956 2680 S 0.0 0.3 0:02.84 /usr/sbin/cron -f <br> 657 messagebu 20 0 7716 4608 3640 S 0.0 0.5 0:03.53 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation <br> 667 root 20 0 29256 12252 4616 S 0.0 1.2 0:00.11 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers <br> 684 syslog 20 0 219M 4288 2728 S 0.0 0.4 0:02.41 /usr/sbin/rsyslogd -n -iNONE <br> 685 syslog 20 0 219M 4288 2728 S 0.0 0.4 0:00.00 /usr/sbin/rsyslogd -n -iNONE <br> 686 syslog 20 0 219M 4288 2728 S 0.0 0.4 0:02.41 /usr/sbin/rsyslogd -n -iNONE <br> 669 syslog 20 0 219M 4288 2728 S 0.0 0.4 0:04.94 /usr/sbin/rsyslogd -n -iNONE <br> 671 root 20 0 18260 7508 5012 S 0.0 0.7 0:03.57 /lib/systemd/systemd-logind <br> 673 daemon 20 0 3792 2336 2164 S 0.0 0.2 0:00.02 /usr/sbin/atd -f <br> 719 root 20 0 7352 2100 1976 S 0.0 0.2 0:00.00 /sbin/agetty -o -p -- \u --keep-baud 115200,38400,9600 ttyS0 vt220 <br> 729 root 20 0 5828 1780 1664 S 0.0 0.2 0:00.02 /sbin/agetty -o -p -- \u --noclear tty1 linux <br> 740 root 20 0 230M 3996 3092 S 0.0 0.4 0:00.00 /usr/lib/policykit-1/polkitd --no-debug <br> 743 root 20 0 230M 3996 3092 S 0.0 0.4 0:00.21 /usr/lib/policykit-1/polkitd --no-debug <br> </pre>

<p> What do you think? Is this happening because the server is too overloaded? </p>

<div class="yesno"> [[Yes->top 2]] [[No->top 2]] </div><p> CPU usage is basically at 0%. It's not happening because the server is overloaded. </p>

<div class="nav go-back"> [[Go back -> Server]] </div><p> You decide to strace the server process. </p>

<<ask "What command do you need to run to strace the server?" "$strace_cmd" "strace server 2">><<you-said "You said:" $strace_cmd>>

<p> This game only knows one way to do it so here's what we're going to do. To strace the server, first you need to find its PID. You know that the program is called <code>server.py</code>. </p>

<<ask "What command can you run to find the server's PID?" "$server_pid_cmd" "strace server 3">><<you-said "Your idea for the comand to run to find the server's PID:" $server_pid_cmd>>

<p> There are lots of ways to do this, one ways is to run <code>ps aux | grep server.py</code>. </p>

<pre> # ps aux | grep server.py <br> root 96612 0.2 0.9 16168 9416 pts/0 S+ 14:35 0:00 python3 server.py <br> root 96700 0.0 0.0 8164 736 pts/1 S+ 14:36 0:00 grep --color=auto server.py </pre>

<<ask "What's the server's PID?" "$server_pid" "strace server 4">><<you-said "You said the server's PID is:" $server_pid>>

<p> The PID is 96612. You can see it here: </p>

<pre> root <strong>96612</strong> 0.2 0.9 16168 9416 pts/0 S+ 14:35 0:00 python3 server.py </pre>

Now that we know the PID, we can strace the server:

<pre> $ strace -f -p 96612 <br> strace: Process 96612 attached <br> accept4(3, </pre>

<div class="nav"> [[Make a request to the server->strace server 5]] </div><p> You make a request to the server by running <code>node slow.js</code>, and strace prints out a lot of output: </p>

<pre> $ strace -tt -f -p $(pgrep python) <br> 15:29:44.894106 accept4(3, {sa_family=AF_INET, sin_port=htons(48560), sin_addr=inet_addr("5.6.7.8")}, [16], SOCK_CLOEXEC) = 4 <br> 15:29:50.008666 getsockname(4, {sa_family=AF_INET, sin_port=htons(8000), sin_addr=inet_addr("1.2.3.4")}, [128->16]) = 0 <br> 15:29:50.008986 recvfrom(4, "POST / HTTP/1.1\r\nHost: mysterybo"..., 4096, 0, NULL, NULL) = 107 <br> 15:29:50.013696 recvfrom(4, "buy some milk\n", 4096, 0, NULL, NULL) = 14 <br> 15:29:50.055463 sendto(4, "HTTP/1.1 200 OK\r\nContent-Length:"..., 41, 0, NULL, 0) = 41 <br> 15:29:50.055787 close(4) = 0 </pre>

<<ask "Which part of this is the slow part?" "$strace_slow_2" "strace server 6">><<you-said "You said:" $strace_slow_2>>

<p> It's actually hard to tell just from this! </p>

There's a 41ms gap here:

<pre> 15:29:50.013696 recvfrom(4, "buy some milk\n", 4096, 0, NULL, NULL) = 14 <br> 15:29:50.055463 sendto(4, "HTTP/1.1 200 OK\r\nContent-Length:"..., 41, 0, NULL, 0) = 41 </pre>

<p> But it's not easy to tell what causes it -- did the <code>recvfrom</code> system call take a long time to return, or were there 42ms of calculations in between the <code>recvfrom</code> and the <code>sendto</code>? </p>

<p> To figure it out, you can use the <code> -T</code> flag to strace which tells us how long each system call takes. The number in angle brackets (<code><......></code>) at the end of each line is how long that system call took, in seconds. Here's what that looks like: </p>

<pre> $ strace -tt -T -f -p $(pgrep python) <br> 15:56:15.517327 accept4(3, {sa_family=AF_INET, sin_port=htons(48564), sin_addr=inet_addr("5.6.7.8")}, [16], SOCK_CLOEXEC) = 4 <1.889267> <br> 15:56:17.407185 getsockname(4, {sa_family=AF_INET, sin_port=htons(8000), sin_addr=inet_addr("1.2.3.4")}, [128->16]) = 0 <0.000018> <br> 15:56:17.407481 recvfrom(4, "POST / HTTP/1.1\r\nHost: mysterybo"..., 4096, 0, NULL, NULL) = 107 <0.002145> <br> 15:56:17.410349 recvfrom(4, "buy some milk\n", 4096, 0, NULL, NULL) = 14 <0.040266> <br> 15:56:17.451423 sendto(4, "HTTP/1.1 200 OK\r\nContent-Length:"..., 41, 0, NULL, 0) = 41 <0.000031> <br> 15:56:17.451710 close(4) = 0 <0.000055> </pre>

<<ask "What's causing the slowness?" "$strace_slow_3" "strace server 7">><<you-said "You said:" $strace_slow_3>>

<p> This <code>recvfrom</code> is the slow system call: </p> <pre> 15:56:17.410349 recvfrom(4, "buy some milk\n", 4096, 0, NULL, NULL) = 14 <0.040266> </pre>

<<newinfo "The server spends 40ms waiting for the client to finish the POST request">>

<div class="nav go-back"> [[Go back -> Server]] </div><p> Now that you understand what's happening, you need to figure out what to do about it. </p>

<<ask "How do you think we should fix this?" "$how_fix" "how fix">><<you-said "You said:" $how_fix>>

This game isn't very smart, so it only knows about 3 options. Hopefully one of these is what you said:

<div class="nav"> [[Disable Nagle's algorithm -> disable nagle]] [[Disable delayed ACKs -> disable delayed ACKs]] [[Don't split the POST request into 2 packets -> send 1 packet]] </div><p> You decide to fix this by disabling Nagle's algorithm. You look up "disable nagle node js" and find out that you need to set the <code>TCP_NODELAY</code> socket option. </p>

<p> You just add one line of code to your test script: </p> <pre> req.setNoDelay(true); </pre>

<div class="nav"> [[Run slow.js again -> win]] </div><p> You decide to fix this by disabling delayed ACKs on the server. You google "disable delayed ACKs" and you see that setting the <code>TCP_QUICKACK</code> socket option to 1 will disable delayed ACKs, but also some people are saying that the Linux TCP stack will sometimes turn off that setting, so it's not reliable. </p>

<p> You spend another ten minutes Googling and trying to figure out how to disable delayed ACKs but it doesn't seem that clear how to do it. </p>

[[Try a different solution -> how fix]]<p> One way to look at this is that this problem is happening because the client is splitting its POST request into 2 parts -- if it were only sending 1 packet, then it wouldn't have to wait for the second part to get sent. </p>

<p> This headers are being sent in a separate packet because of the <code>req.flushHeaders()</code> line in the uploadFile function -- it forces the headers to be sent right away. </p>

<pre> async function uploadFile(filename) { <br> const req = http.request({ hostname: 'mysterybox.local', port: 8000, method: 'POST'}, res => { <br> console.log("Time elapsed:", new Date() - start, "milliseconds"); <br> }) <br> const stats = await fs.stat(filename) <br> start = new Date(); <br> req.setHeader('Content-Type', 'text/plain'); <br> req.setHeader('Content-Length', stats.size); <br> req.flushHeaders(); <br> const data = await fs.readFile(filename, 'utf8'); <br> await new Promise(resolve => {req.write(data, resolve)}); <br> } <br> <br> uploadFile("test.txt") <br> </pre>

<p> You remove the <code>req.flushHeaders()</code> line and try running the code again. </p>

<div class="nav"> [[Run slow.js again -> win]] </div>Now the request in the test script only takes 10ms, down from 50ms -- it's 5 times faster! Amazing! Not so coincidentally, the change of time is exactly 40ms.

<img src=" data:image/jpeg;base64,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">

<a href="https://www.freepik.com/vectors/background">image by brgfx</a>

<div class="nav"> [[Try a different solution -> how fix]] [[Epilogue -> Epilogue]] </div><p> This bug seems obscure if you haven't seen it before, but it's relatively common! It can happen any time a client is sending two small packets immediately followed by reading a response.Here are 5 blog posts talking about the same bug: </p>

<ul> <li> <a href="https://rachelbythebay.com/w/2020/10/14/lag/"> 40 milliseconds of latency that just would not go away</a></li> <li> <a href="https://jvns.ca/blog/2015/11/21/why-you-should-understand-a-little-about-tcp/"> Why you should understand (a little) about TCP</a></li> <li> <a href="https://gocardless.com/blog/in-search-of-performance-how-we-shaved-200ms-off-every-post-request/"> In search of performance - how we shaved 200ms off every POST request</a></li> <li> <a href="https://vorner.github.io/2020/11/06/40-ms-bug.html"> 40 millisecond bug</a></li> <li> <a href="http://www.stuartcheshire.org/papers/NagleDelayedAck/">TCP Performance problems caused by interaction between Nagle’s Algorithm and Delayed ACK </a></li> </ul>

<p> A "magic number" for this bug is 40 milliseconds -- that's the delayed ACK timeout. But like you can see in the "how we shaved 200ms off every POST request" blog post above, it can also manifest as a 200ms delay in some cases. </p>

<p> Because of this issue, a lot of programming languages (including Python, Ruby, and Go) set <code>TCP_NODELAY</code> on every TCP connection by default to disable Nagle's algorithm. </p>

<p> Also, the Linux kernel doesn't always enable delayed ACKs -- to reproduce this I actually had to write a Python program that explicitly turns them on. I haven't been able to find a clear explanation of exactly when delayed ACKs are used. </p>

<p> The reason the example code here uses Node is that node.js (as of May 2021) doesn't set <code>TCP_NODELAY</code> by default. The <code>req.flushHeaders()</code> thing is admittedly a little contrived. </p>

<html> <script async data-uid="353d410db9" src="https://computer-wizard-industries.ck.page/353d410db9/index.js"></script> </html><<widget "newinfo">> <<if !$knowledge.has($args[0])>> <div class="newinfo"> <h2> you've found new information!! </h2> <<run $knowledge.add($args[0])>> <p> Adding <strong>"<<print $args[0]>>"</strong> to your "What you know" list. </p> </div> <</if>> <</widget>>

<<widget "init">> <<if ndef $knowledge>> <<set $knowledge = new Set()>> <</if>> <</widget>>

<!-- <<ask "Why do you think this happened?" "$variable" "Next page">> --> <<widget "ask">> <div style="margin-top: 3em;"> <<print $args[0]>>   <<textbox $args[1] "" $args[2]>> <div style="display: flex; margin-top: .5em;"> <<link "Submit" $args[2]>><</link>> <<link "I don't know" $args[2]>><</link>> </div> </div> <</widget>>

<<widget "ask-area">> <div style="margin-top: 3em;"> <<print $args[0]>>   <<textarea $args[1] "" $args[2]>> <div style="display: flex; margin-top: .5em;"> <<link "Submit" $args[2]>><</link>> <<link "I don't know" $args[2]>><</link>> </div> </div> <</widget>>

<!-- <<you-said "Your reason for the SYN packets being retried:" $why_syn>> --> <<widget "you-said">> <p> <<if !$args[1] eq "">><<print $args[0]>> "<strong><<print $args[1]>></strong>".<</if>> </p> <</widget>><div style="text-align: left"> <strong>What you know:</strong> <<if $knowledge.size eq 0>> nothing yet! <<else>> <ol> <<for _i, _name range $knowledge>> <li> _name</li> <</for>> </ol> <</if>> </div>

<div style="margin-top: 4em"> <a href="/"><< Back to all puzzles</a> </div>

The Case of the 50ms request

What you know: nothing yet!

Hello! This is a mystery where your goal is to solve a debugging problem! You'll collect clues, interpret evidence, and ultimately solve the Case of the 50ms Request!

In the sidebar, you'll notice a "What you know" list. As you collect more clues, the list will update with what you've learned.

Click "Start" to get started.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK