[llvm-bugs] [Bug 35629] New: i/o fragmentation inside fstream.
via llvm-bugs
llvm-bugs at lists.llvm.org
Mon Dec 11 12:20:08 PST 2017
https://bugs.llvm.org/show_bug.cgi?id=35629
Bug ID: 35629
Summary: i/o fragmentation inside fstream.
Product: libc++
Version: 5.0
Hardware: PC
OS: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: All Bugs
Assignee: unassignedclangbugs at nondot.org
Reporter: pawel_sikora at zoho.com
CC: llvm-bugs at lists.llvm.org, mclow.lists at gmail.com
i'm trying to minimize small i/o operations for better overall application
performance over network filesystem. setting quite large stream buffer doesn't
work as axpected.
% cat t.cpp
#include <fstream>
#include <memory>
#include <string>
int main()
{
std::size_t bufferSize = 1024*1024;
std::unique_ptr< char > buffer( new char[ bufferSize ] );
std::ofstream f;
f.rdbuf()->pubsetbuf( buffer.get(), bufferSize );
f.open( "s.txt", std::ios_base::out | std::ios_base::binary );
std::string s1( 10240, 'x' );
f << s1;
f << s1;
f.close();
}
% ~/toolchain/llvm/sysroot/bin/clang++ t.cpp -o t
-Wl,-rpath,$HOME/toolchain/llvm/sysroot/lib -std=c++1y -stdlib=libc++ -ggdb
% strace ./t 2>&1 |grep write
write(3, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 4096) = 4096
write(3, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 16384) = 16384
% g++ t.cpp -o t -std=c++1y // g++ from fedora-27
% strace ./t 2>&1 |grep write
writev(3, [{iov_base=NULL, iov_len=0},
{iov_base="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., iov_len=10240}], 2) = 10240
writev(3, [{iov_base="", iov_len=0},
{iov_base="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., iov_len=10240}], 2) = 10240
gcc with my patch from https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63746:
% ~/toolchain/gcc/sysroot/bin/x86_64-linux-gnu-g++ t.cpp -o t
-Wl,-rpath,$HOME/toolchain/gcc/sysroot/lib64 -std=c++1y
% strace ./t 2>&1 |grep write
write(3, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 20480) = 20480
looks like both standard c++ library implementations need patching in this
area.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20171211/07f0a90b/attachment.html>
More information about the llvm-bugs
mailing list