diff options
author | Werner Koch <[email protected]> | 2023-05-08 07:16:35 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2023-05-08 07:40:14 +0000 |
commit | 08ff55bd44aea6cd8b25384ee7d127576866ec71 (patch) | |
tree | b7c8bd096f8b4aa2590040ef5564abc556666166 /kbx/keybox.h | |
parent | kbx: Use wrapper functions for es_fclose and es_fopen. (diff) | |
download | gnupg-08ff55bd44aea6cd8b25384ee7d127576866ec71.tar.gz gnupg-08ff55bd44aea6cd8b25384ee7d127576866ec71.zip |
kbx: Use custom estream buffering
* kbx/keybox-init.c (ll_buffer_size): New var intialized to 128k
(stream_buffers): New var.
(keybox_set_buffersize): New.
(_keybox_ll_open, _keybox_ll_close): Implement buffering.
* sm/gpgsm.c (oKbxBufferSize): New.
(opts): Add option --kbx-buffer-size.
(main): Call keybox_set_buffersize.
* g10/gpg.c: Include keybox.h.
* (oKbxBufferSize): New.
(opts): Add option --kbx-buffer-size.
(main): Call keybox_set_buffersize.
--
Running a test on Windows using a pubring.kbx with
Total number of blobs: 2098
openpgp: 1294
x509: 803
and a size of 42MiB with
gpgsm -k --with-validation --disable-dirmngr --kbx-buffer-size N >nul
gives these performance figures using procmon
| N(k) | file events | time(s) |
|------+-------------+---------|
| 0 | 4900000 | 86 |
| 16 | 2456000 | 58 |
| 32 | 1233000 | 43 |
| 64 | 622000 | 37 |
| 128 | 317000 | 32 |
| 256 | 164000 | 31 |
| 512 | 88000 | 30 |
Using _open instead of CreateFile give the same number of file events
but increased the time slight by one second for the measured buffer
size of 64k and 128k. Benchmarks for gpg have not been conducted.
Diffstat (limited to 'kbx/keybox.h')
-rw-r--r-- | kbx/keybox.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/kbx/keybox.h b/kbx/keybox.h index 9bff271ea..1146eca31 100644 --- a/kbx/keybox.h +++ b/kbx/keybox.h @@ -66,6 +66,7 @@ typedef enum /*-- keybox-init.c --*/ gpg_error_t keybox_register_file (const char *fname, int secret, void **r_token); +void keybox_set_buffersize (unsigned int kbytes, int reserved); int keybox_is_writable (void *token); KEYBOX_HANDLE keybox_new_openpgp (void *token, int secret); |