aboutsummaryrefslogtreecommitdiffstats
path: root/doc/notes.txt
blob: a86db880dd8407109f8a3dba0ddb127c126ddfeb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

On loopback network device, mtu is 65kb!
Not 1500bytes, which is what wlan0 and eth0 have.

scp seems to use ~16kbytes per "block"
cp (disk-to-disk) is ~125kbytes per "block"

wonder if scp is doing anything fancy with local domain sockets.

ucp uses 4kb "blocks" to read from disk.

utp is sending ~1.3kbyte messages (tiny), even over loopback

looks like a reasonably large amount of time is being spent zeroing buffers:

      920,293,418  ???:__GI_memset [/lib/x86_64-linux-gnu/libc-2.22.so]

The 'utpcat' library that ships with the utp 

canonical reference on this stuff is:
    http://moo.nac.uci.edu/~hjm/HOWTO_move_data.html

ended up using valgrind/callgrind like:

    valgrind --tool=callgrind ./ucp /tmp/dummy bnewbold@localhost:dummy --no-crypto
    callgrind_annotate callgrind.out.18253 --inclusive=yes
    # optionally, --tree=both to annotate

valgrind really slowed things down (like 5x or 10x slower, subjectively?). I
think a tool like kcachegrind might be helpful, though I couldn't try that one
(debian testing woes).

almost useful tool! rust's `cargo profile` command:

    cargo install cargo-profiler
    cargo profiler callgrind --bin target/debug/ucp

It has much better/easier output, but doesn't allow arguments to the binary
being called (?!?!?). I created a pull request for this.

QUESTIONS:
- how does scp send network data w/o 'send' or 'sendfile'? Is it using fd
  access to tcp socket?
- what is the deal with setsockopt in utp?

Beware that data size isn't equal to encrypted data size! Secret box adds the
nonce as part of the encrypted data.

mosh uses AES-128 with OCB mode.

#### 

* *MSG_MORE and **TCP_CORK*
* freebsd’s sendfile() + TLS support
* kafka’s fast disk I/O stuff (hint: no memory buffers if possible…)
* splice() and sendfile() commands