==> Makefile <==
CXXFLAGS = -std=c++11 -g -O2 -I$$HOME/mongo-client-install/include
LIBS = -L$$HOME/mongo-client-install/lib -lmongoclient -lboost_regex-mt -lboost_thread-mt -lboost_system-mt
run_bson_benchmark: bson_benchmark
./bson_benchmark.sh
bson_benchmark: bson_benchmark.cpp
$(CXX) bson_benchmark.cpp -o bson_benchmark $(CXXFLAGS) $(LIBS)
==> bson_benchmark.cpp <==
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <vector>
#include <random>
#include <thread>
#include <boost/format.hpp>
#ifdef _WIN32
#include <WinSock2.h>
#endif
#include "mongo/client/dbclient.h" // for the driver
using namespace std;
using mongo::be;
using mongo::bo;
using mongo::bob;
int main(int argc, char** argv) {
string hostColonPort;
if(argc == 2) {
hostColonPort = argv[1];
}
else {
hostColonPort = "localhost:27017";
}
mongo::client::initialize();
mongo::DBClientConnection c;
c.connect(hostColonPort);
ios_base::sync_with_stdio(false);
vector<string> fieldnames;
for (int c = 0; c < 20; ++c) {
fieldnames.push_back(str(boost::format("price%02d") % c));
}
for (int a = 0; true; ++a)
{
const mongo::OID generated = mongo::OID::gen();
bob b;
b.append("_id", generated);
//b.appendTimestamp("time");
b.append("lineno", "lineno");
b.append("symbol", "symbol");
b.append("feed", "feed");
for (int c = 0; c < 20; ++c) {
b.appendNumber(fieldnames[c], (double) 1/(c+1.0));
}
bo result = b.obj();
cout << a << "\n";
c.insert("test.ticks", result);
}
}
==> strace.log <==
execve("./bson_benchmark", ["./bson_benchmark"], [/* 38 vars */]) = 0
brk(0) = 0x1df5000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8741a8a000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/home/user01/mongo-client-install/lib/tls/x86_64/libmongoclient.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/user01/mongo-client-install/lib/tls/x86_64", 0x7fffe8161130) = -1 ENOENT (No such file or directory)
open("/home/user01/mongo-client-install/lib/tls/libmongoclient.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/user01/mongo-client-install/lib/tls", 0x7fffe8161130) = -1 ENOENT (No such file or directory)
open("/home/user01/mongo-client-install/lib/x86_64/libmongoclient.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/user01/mongo-client-install/lib/x86_64", 0x7fffe8161130) = -1 ENOENT (No such file or directory)
open("/home/user01/mongo-client-install/lib/libmongoclient.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\255\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=19223894, ...}) = 0
mmap(NULL, 3350792, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f8741538000
mprotect(0x7f8741663000, 2097152, PROT_NONE) = 0
mmap(0x7f8741863000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12b000) = 0x7f8741863000
mmap(0x7f874186a000, 264, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f874186a000
close(3) = 0
open("/home/user01/mongo-client-install/lib/libboost_regex-mt.so.1.53.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=150801, ...}) = 0
mmap(NULL, 150801, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f8741a65000
close(3) = 0
open("/lib64/libboost_regex-mt.so.1.53.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\266\4\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1060600, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8741a64000
mmap(NULL, 3154480, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f8741235000
mprotect(0x7f8741331000, 2093056, PROT_NONE) = 0
mmap(0x7f8741530000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xfb000) = 0x7f8741530000
close(3) = 0
open("/home/user01/mongo-client-install/lib/libboost_thread-mt.so.1.53.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/lib64/libboost_thread-mt.so.1.53.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\267\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=94304, ...}) = 0
mmap(NULL, 2188504, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f874101e000
mprotect(0x7f8741033000, 2093056, PROT_NONE) = 0
mmap(0x7f8741232000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7f8741232000
close(3) = 0
open("/home/user01/mongo-client-install/lib/libboost_system-mt.so.1.53.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/lib64/libboost_system-mt.so.1.53.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\22\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=15592, ...}) = 0
mmap(NULL, 2109688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f8740e1a000
mprotect(0x7f8740e1d000, 2093056, PROT_NONE) = 0
mmap(0x7f874101c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f874101c000
close(3) = 0
open("/home/user01/mongo-client-install/lib/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/lib64/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\265\5\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=991744, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8741a63000
mmap(NULL, 3171360, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f8740b13000
mprotect(0x7f8740bfc000, 2093056, PROT_NONE) = 0
mmap(0x7f8740dfb000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe8000) = 0x7f8740dfb000
mmap(0x7f8740e05000, 82976, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f8740e05000
close(3) = 0
open("/home/user01/mongo-client-install/lib/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/lib64/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260T\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1141552, ...}) = 0
mmap(NULL, 3150168, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f8740811000
mprotect(0x7f8740912000, 2093056, PROT_NONE) = 0
mmap(0x7f8740b11000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x100000) = 0x7f8740b11000
close(3) = 0
open("/home/user01/mongo-client-install/lib/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/lib64/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360*\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=88720, ...}) = 0
mmap(NULL, 2184192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f87405fb000
mprotect(0x7f8740610000, 2093056, PROT_NONE) = 0
mmap(0x7f874080f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7f874080f000
close(3) = 0
open("/home/user01/mongo-client-install/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\34\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=2107600, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8741a62000
mmap(NULL, 3932736, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f874023a000
mprotect(0x7f87403f0000, 2097152, PROT_NONE) = 0
mmap(0x7f87405f0000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b6000) = 0x7f87405f0000
mmap(0x7f87405f6000, 16960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f87405f6000
close(3) = 0
open("/home/user01/mongo-client-install/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240l\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=141616, ...}) = 0
mmap(NULL, 2208864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f874001e000
mprotect(0x7f8740034000, 2097152, PROT_NONE) = 0
mmap(0x7f8740234000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x7f8740234000
mmap(0x7f8740236000, 13408, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f8740236000
close(3) = 0
open("/home/user01/mongo-client-install/lib/librt.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/lib64/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\"\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=44048, ...}) = 0
mmap(NULL, 2128952, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f873fe16000
mprotect(0x7f873fe1d000, 2093056, PROT_NONE) = 0
mmap(0x7f874001c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7f874001c000
close(3) = 0
open("/home/user01/mongo-client-install/lib/libicuuc.so.50", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/lib64/libicuuc.so.50", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240!\5\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1539384, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8741a61000
mmap(NULL, 3641312, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f873fa9d000
mprotect(0x7f873fc01000, 2097152, PROT_NONE) = 0
mmap(0x7f873fe01000, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x164000) = 0x7f873fe01000
mmap(0x7f873fe12000, 16352, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f873fe12000
close(3) = 0
open("/home/user01/mongo-client-install/lib/libicui18n.so.50", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/lib64/libicui18n.so.50", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\206\t\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=2091952, ...}) = 0
mmap(NULL, 4183008, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f873f69f000
mprotect(0x7f873f88e000, 2097152, PROT_NONE) = 0
mmap(0x7f873fa8e000, 57344, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1ef000) = 0x7f873fa8e000
mmap(0x7f873fa9c000, 992, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f873fa9c000
close(3) = 0
open("/home/user01/mongo-client-install/lib/libicudata.so.50", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/lib64/libicudata.so.50", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\5\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=20789896, ...}) = 0
mmap(NULL, 22884400, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f873e0cb000
mprotect(0x7f873f49e000, 2093056, PROT_NONE) = 0
mmap(0x7f873f69d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13d2000) = 0x7f873f69d000
close(3) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8741a60000
open("/home/user01/mongo-client-install/lib/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\16\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=19512, ...}) = 0
mmap(NULL, 2109744, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f873dec7000
mprotect(0x7f873deca000, 2093056, PROT_NONE) = 0
mmap(0x7f873e0c9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f873e0c9000
close(3) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8741a5f000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8741a5e000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8741a5c000
arch_prctl(ARCH_SET_FS, 0x7f8741a5c740) = 0
mprotect(0x7f87405f0000, 16384, PROT_READ) = 0
mprotect(0x7f873e0c9000, 4096, PROT_READ) = 0
mprotect(0x7f873f69d000, 4096, PROT_READ) = 0
mprotect(0x7f8740b11000, 4096, PROT_READ) = 0
mprotect(0x7f874080f000, 4096, PROT_READ) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8741a5b000
mprotect(0x7f8740dfb000, 32768, PROT_READ) = 0
mprotect(0x7f8740234000, 4096, PROT_READ) = 0
mprotect(0x7f873fe01000, 65536, PROT_READ) = 0
mprotect(0x7f873fa8e000, 49152, PROT_READ) = 0
mprotect(0x7f874001c000, 4096, PROT_READ) = 0
mprotect(0x7f874101c000, 4096, PROT_READ) = 0
mprotect(0x7f8741232000, 8192, PROT_READ) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8741a59000
mprotect(0x7f8741530000, 20480, PROT_READ) = 0
mprotect(0x7f8741863000, 24576, PROT_READ) = 0
mprotect(0x611000, 4096, PROT_READ) = 0
mprotect(0x7f8741a8b000, 4096, PROT_READ) = 0
munmap(0x7f8741a65000, 150801) = 0
set_tid_address(0x7f8741a5ca10) = 6455
set_robust_list(0x7f8741a5ca20, 24) = 0
rt_sigaction(SIGRTMIN, {0x7f8740024780, [], SA_RESTORER|SA_SIGINFO, 0x7f874002d130}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x7f8740024810, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7f874002d130}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
brk(0) = 0x1df5000
brk(0x1e16000) = 0x1e16000
futex(0x7f8740e1796c, FUTEX_WAKE_PRIVATE,
2147483647) = 0
futex(0x7f8740e17978, FUTEX_WAKE_PRIVATE,
2147483647) = 0
clock_getres(CLOCK_MONOTONIC, {0, 1}) = 0
open("/dev/urandom", O_RDONLY) = 3
read(3, "\260\10EUI\255R\246\27v\262\245+\342\323\31-kB\26\261)\270\366\276.H\312\241\215@7"..., 8191) = 8191
close(3) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SI_KERNEL, si_addr=0} ---
+++ killed by SIGSEGV (core dumped) +++