From 4a41c8fde43a4d185ced08483f07a02bcb5d431f Mon Sep 17 00:00:00 2001 From: Norbert Podhorszki Date: Tue, 1 Mar 2022 08:35:52 -0500 Subject: [PATCH] Set BP5's BufferChunkSize to 128MB by default. --- docs/user_guide/source/engines/bp5.rst | 4 ++-- source/adios2/common/ADIOSTypes.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/user_guide/source/engines/bp5.rst b/docs/user_guide/source/engines/bp5.rst index 4c46fb7d0e..a8d30f024d 100644 --- a/docs/user_guide/source/engines/bp5.rst +++ b/docs/user_guide/source/engines/bp5.rst @@ -78,7 +78,7 @@ This engine allows the user to fine tune the buffering operations through the fo #. **BufferVType**: *chunk* or *malloc*, default is chunking. Chunking maintains the buffer as a list of memory blocks, either ADIOS-owned for sync-ed Puts and small Puts, and user-owned pointers of deferred Puts. Malloc maintains a single memory block and extends it (reallocates) whenever more data is buffered. Chunking incurs extra cost in I/O by having to write data in chunks (multiple write system calls), which can be helped by increasing *BufferChunkSize* and *MinDeferredSize*. Malloc incurs extra cost by reallocating memory whenever more data is buffered (by Put()), which can be helped by increasing *InitialBufferSize*. - #. **BufferChunkSize**: (for *chunk* buffer type) The size of each memory buffer chunk, default is 16MB but it is worth increasing up to 2GB if possible for maximum write performance. + #. **BufferChunkSize**: (for *chunk* buffer type) The size of each memory buffer chunk, default is 128MB but it is worth increasing up to 2GB if possible for maximum write performance. #. **MinDeferredSize**: (for *chunk* buffer type) Small user variables are always buffered, default is 4MB. @@ -134,7 +134,7 @@ This engine allows the user to fine tune the buffering operations through the fo StripeSize integer+units **4KB** MaxShmSize integer+units **4294762496** BufferVType string **chunk**, malloc - BufferChunkSize integer+units **16MB**, worth increasing up to min(2GB, datasize/process/step) + BufferChunkSize integer+units **128MB**, worth increasing up to min(2GB, datasize/process/step) MinDeferredSize integer+units **4MB** InitialBufferSize float+units >= 16Kb **16Kb**, 10Mb, 0.5Gb GrowthFactor float > 1 **1.05**, 1.01, 1.5, 2 diff --git a/source/adios2/common/ADIOSTypes.h b/source/adios2/common/ADIOSTypes.h index 02705bfac3..bf5866d9aa 100644 --- a/source/adios2/common/ADIOSTypes.h +++ b/source/adios2/common/ADIOSTypes.h @@ -248,8 +248,8 @@ constexpr uint64_t DefaultMaxBufferSize = MaxSizeT - 1; constexpr float DefaultBufferGrowthFactor = 1.05f; /** default Buffer Chunk Size - * 16Mb */ -constexpr uint64_t DefaultBufferChunkSize = 16 * 1024 * 1024; + * 128Mb */ +constexpr uint64_t DefaultBufferChunkSize = 128 * 1024 * 1024; /** default minimum size not copying deferred writes * 4Mb */