Roman Butor
a68480093c
s3: speed up multi-thread uploads by checksumming chunks in 1 MiB reads
...
WriteChunk checksums the chunk with io.Copy before sending it. For a
reader that implements neither WriterTo nor a memory backed Read - a
local file opened by a multi-thread copy - io.Copy falls back to its own
32 KiB buffer, so the source is read in 32 KiB pieces and the disk sees
thousands of requests per second where it should see hundreds.
Hand io.CopyBuffer a 1 MiB buffer instead. It is allocated for the
checksum pass rather than taken from the pool, where it could wait for
ever on a --max-buffer-memory below the page size. Readers that do
implement WriterTo, such as pool.RW, keep their fast path and don't get
a buffer.
2026-10-08 14:55:14 +01:00
..
2024-08-08 13:41:31 +01:00
2026-10-07 12:16:42 +01:00
2026-10-08 14:15:46 +01:00
2026-10-08 10:53:05 +01:00
2026-08-21 12:23:31 +01:00
2026-03-03 14:01:11 +00:00
2026-09-20 14:23:50 +01:00
2026-07-12 13:26:17 +01:00
2026-10-05 17:39:34 +01:00
2026-08-21 12:23:31 +01:00
2026-07-16 14:47:03 +01:00
2026-09-16 17:09:39 +01:00
2026-09-26 12:51:07 +01:00
2026-01-18 20:48:33 +01:00
2026-10-07 12:16:42 +01:00
2026-09-23 15:59:35 +01:00
2026-08-30 13:07:41 +01:00
2026-09-08 16:57:43 +01:00
2024-09-06 18:20:10 +01:00
2025-02-28 11:31:14 +00:00
2026-09-01 14:21:52 +01:00
2026-07-13 11:22:04 +01:00
2026-09-05 12:14:46 +01:00
2026-08-21 12:23:31 +01:00
2026-08-21 12:23:31 +01:00
2025-12-01 19:04:02 +00:00
2026-07-07 12:35:37 +01:00
2026-07-13 10:44:03 +01:00
2026-07-13 13:53:29 +01:00
2026-10-05 17:39:34 +01:00
2026-09-04 19:00:22 +01:00
2026-09-01 14:21:52 +01:00
2026-09-22 11:03:16 +01:00
2026-09-22 11:03:16 +01:00
2026-08-11 19:32:12 +01:00
2026-09-23 16:00:46 +01:00
2026-09-01 14:21:52 +01:00
2025-06-24 15:04:45 +01:00
2026-09-01 14:21:52 +01:00
2026-10-02 15:44:25 +01:00
2026-09-01 14:21:52 +01:00
2026-07-20 17:37:16 +01:00
2025-12-17 10:21:12 +00:00
2026-07-14 14:13:49 +01:00
2026-10-08 14:38:14 +01:00
2026-09-01 14:21:52 +01:00
2026-09-15 16:38:20 +01:00
2026-08-04 19:29:21 +01:00
2026-04-20 12:16:10 +01:00
2026-09-01 14:21:52 +01:00
2026-09-05 12:14:46 +01:00
2026-09-23 15:58:36 +01:00
2026-08-29 13:13:34 +01:00
2026-09-01 14:21:52 +01:00
2025-04-08 15:14:00 +01:00
2026-09-01 14:21:52 +01:00
2026-10-08 14:55:14 +01:00
2026-09-05 12:14:46 +01:00
2026-10-06 10:12:50 +01:00
2026-09-22 11:03:16 +01:00
2026-02-18 12:11:52 +00:00
2026-08-11 19:32:12 +01:00
2026-09-21 17:27:57 +01:00
2024-04-22 19:29:12 +02:00
2026-05-06 10:51:16 +01:00
2026-07-02 11:30:15 +01:00
2026-07-17 18:29:39 +01:00
2025-09-14 15:58:20 +01:00
2026-10-05 17:39:34 +01:00
2026-09-08 16:40:17 +01:00
2026-08-21 12:23:31 +01:00