Alright, I have made some progress.
First, it seems there is some kind of numeric overflow when specifying
large chunk sizes (such as a chunkSize of 20000). As this is set in
megabytes, the overflow happens because this value is converted to
bytes for the splitVector call. However this did not seem to be
causing a slow-down.
One slow-down I seem to have traced to the Balancer. The slow-down
occurs during the time the balancer acquires a distributed lock, it
seems. For example:
Thu May 10 17:33:55 [Balancer] distributed lock 'balancer/mongo:
27017:1336695564:1804289383' acquired, ts : 4fac5e7384265a7e635f8cbb
Thu May 10 17:33:57 [Balancer] distributed lock 'balancer/mongo:
27017:1336695564:1804289383' unlocked.
During those 2 seconds my inserts drop to 0. Which is obviously very
upsetting, because under heavy inserts this seems to happen often.
Fixed by disabling the balancer.
However, after a few minutes, my rates still drop to almost 0 and I
will have to trace that. The slowdowns happens because mongodb pushes
a lot of small writes to disk (why?)
> > > > but quicklyslowdownto 0 to 5k/sec
>
> > > > Logs show a lot of
> > > > Tue May 8 13:47:46 [conn21] warning: could have autosplit on
> > > > collection: test.test1 but: splitVector command failed: { errmsg:
> > > > "need to specify the desired maxchunksize(maxChunkSize or
> > > > maxChunkSizeBytes)", ok: 0.0 }
> > > > andslowinserts:
> > > > Tue May 8 13:47:50 [conn22] insert test.test1 1320ms
> > > > Tue May 8 13:47:50 [conn31] insert test.test1 1423ms
>
> > > > I have chunkSize set to 20000, and 32 chunks (1 per shard) with fully
> > > > distributed splitting of data.
>
> > > > I need 100k min consistent inserts, but 300k+ would be preferable.
>
> > > > My questions are:
> > > > What's the deal with the splitVector? I am running 2.0.4 and made sure
> > > > to restart everything after setting the chunkSize. Is this what's
> > > > causing theslow-down?
> > > > If not, what could be causing theslow-down? CPU usage is low, and so