aboutsummaryrefslogtreecommitdiff
path: root/binutils/dwarf-mode.el
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2015-08-21 10:13:27 +0100
committerPedro Alves <palves@redhat.com>2015-08-21 10:13:27 +0100
commit80152258b9dfe033828e5c5b6dc3252be1ba7a84 (patch)
treedfad1ed270879d67705db0d3f63681ff082fc66a /binutils/dwarf-mode.el
parent88fc5eb7e23af132eacb895e475b31be0f7623e6 (diff)
downloadgdb-80152258b9dfe033828e5c5b6dc3252be1ba7a84.zip
gdb-80152258b9dfe033828e5c5b6dc3252be1ba7a84.tar.gz
gdb-80152258b9dfe033828e5c5b6dc3252be1ba7a84.tar.bz2
Add readahead cache to gdb's vFile:pread
This patch almost halves the time it takes to "target remote + run to main" on a higher-latency connection. E.g., I've got a ping time of ~85ms to an x86-64 machine on the gcc compile farm (almost 2000km away from me), and I'm behind a ~16Mbit ADSL. When I connect to a gdbserver debugging itself on that machine and run to main, it takes almost 55 seconds: [palves@gcc76] $ ./gdbserver :9999 ./gdbserver [palves@home] $ ssh -L 9999:localhost:9999 gcc76.fsffrance.org [palves@home] $ time ./gdb -data-directory=data-directory -ex "tar rem :9999" -ex "b main" -ex "c" -ex "set confirm off" -ex "quit" Pristine gdb 7.10.50.20150820-cvs gets us: ... Remote debugging using :9999 Reading symbols from target:/home/palves/gdb/build/gdb/gdbserver/gdbserver...done. Reading symbols from target:/lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done. 0x00007ffff7ddd190 in ?? () from target:/lib64/ld-linux-x86-64.so.2 Breakpoint 1 at 0x41200c: file ../../../src/gdb/gdbserver/server.c, line 3635. Continuing. Breakpoint 1, main (argc=1, argv=0x7fffffffe3d8) at ../../../src/gdb/gdbserver/server.c:3635 3635 ../../../src/gdb/gdbserver/server.c: No such file or directory. /home/palves/gdb/build/gdb/gdbserver/gdbserver: No such file or directory. real 0m54.803s user 0m0.329s sys 0m0.064s While with the readahead cache added by this patch, it drops to: real 0m29.462s user 0m0.454s sys 0m0.054s I added a few counters to show cache hit/miss, and got: readahead cache miss 142 readahead cache hit 310 Tested on x86_64 Fedora 20. gdb/ChangeLog: 2015-08-21 Pedro Alves <palves@redhat.com> * remote.c (struct readahead_cache): New. (struct remote_state) <readahead_cache>: New field. (remote_open_1): Invalidate the cache. (readahead_cache_invalidate, readahead_cache_invalidate_fd): New functions. (remote_hostio_pwrite): Invalidate the readahead cache. (remote_hostio_pread): Rename to ... (remote_hostio_pread_vFile): ... this. (remote_hostio_pread_from_cache): New function. (remote_hostio_pread): Reimplement. (remote_hostio_close): Invalidate the readahead cache.
Diffstat (limited to 'binutils/dwarf-mode.el')
0 files changed, 0 insertions, 0 deletions