diff --git a/lightstep-haskell.cabal b/lightstep-haskell.cabal
--- a/lightstep-haskell.cabal
+++ b/lightstep-haskell.cabal
@@ -1,7 +1,7 @@
 cabal-version: 2.4
 
 name:           lightstep-haskell
-version:        0.6.1
+version:        0.7.0
 synopsis:       LightStep OpenTracing client library
 description:    LightStep OpenTracing client library. Uses GRPC transport via proto-lens.
 category:       Tools
diff --git a/src/LightStep/Config.hs b/src/LightStep/Config.hs
--- a/src/LightStep/Config.hs
+++ b/src/LightStep/Config.hs
@@ -17,7 +17,8 @@
         lsToken :: T.Text,
         lsServiceName :: T.Text,
         lsGlobalTags :: [(T.Text, T.Text)],
-        lsGracefulShutdownTimeoutSeconds :: Int
+        lsGracefulShutdownTimeoutSeconds :: Int,
+        lsMinimumBatchSize :: Int
       }
 
 lookupOneOfEnvs :: [String] -> IO (Maybe String)
@@ -39,7 +40,7 @@
       host <- fromMaybe "ingest.lightstep.com" <$> lookupOneOfEnvs ["LIGHTSTEP_HOST", "OPENTRACING_LIGHTSTEP_COLLECTOR_HOST"]
       port <- maybe 443 read <$> lookupOneOfEnvs ["LIGHTSTEP_PORT", "OPENTRACING_LIGHTSTEP_COLLECTOR_PORT"]
       service <- fromMaybe "example-haskell-service" <$> lookupOneOfEnvs ["LIGHTSTEP_SERVICE", "OPENTRACING_LIGHTSTEP_COMPONENT_NAME"]
-      pure $ Just $ LightStepConfig host port (T.pack t) (T.pack service) global_tags 5
+      pure $ Just $ LightStepConfig host port (T.pack t) (T.pack service) global_tags 5 1
     Nothing -> do
       hPutStrLn stderr "LIGHTSTEP_ACCESS_TOKEN environment variable not defined"
       pure Nothing
diff --git a/src/LightStep/Diagnostics.hs b/src/LightStep/Diagnostics.hs
--- a/src/LightStep/Diagnostics.hs
+++ b/src/LightStep/Diagnostics.hs
@@ -32,6 +32,10 @@
 rejectedSpanCountVar = unsafePerformIO $ newTVarIO 0
 {-# NOINLINE rejectedSpanCountVar #-}
 
+sentBatchesCountVar :: TVar Int
+sentBatchesCountVar = unsafePerformIO $ newTVarIO 0
+{-# NOINLINE sentBatchesCountVar #-}
+
 data Diagnostics
   = Diagnostics
       { diagReconnectCount :: !Int,
@@ -39,8 +43,10 @@
         diagFinishedSpanCount :: !Int,
         diagDroppedSpanCount :: !Int,
         diagReportedSpanCount :: !Int,
-        diagRejectedSpanCount :: !Int
+        diagRejectedSpanCount :: !Int,
+        diagSentBatchesCount :: !Int
       }
+  deriving (Show)
 
 getDiagnostics :: IO Diagnostics
 getDiagnostics =
@@ -52,3 +58,4 @@
       <*> readTVar droppedSpanCountVar
       <*> readTVar reportedSpanCountVar
       <*> readTVar rejectedSpanCountVar
+      <*> readTVar sentBatchesCountVar
diff --git a/src/LightStep/HighLevel/IO.hs b/src/LightStep/HighLevel/IO.hs
--- a/src/LightStep/HighLevel/IO.hs
+++ b/src/LightStep/HighLevel/IO.hs
@@ -122,7 +122,7 @@
 
 {-# NOINLINE globalSharedMutableSingletonState #-}
 globalSharedMutableSingletonState :: TBQueue Span
-globalSharedMutableSingletonState = unsafePerformIO $ newTBQueueIO 100
+globalSharedMutableSingletonState = unsafePerformIO $ newTBQueueIO 1000
 
 withSingletonLightStep :: LightStepConfig -> IO () -> IO ()
 withSingletonLightStep cfg action = do
@@ -132,10 +132,11 @@
   let work = do
         d_ "Getting more spans"
         sps <- atomically $ do
-          x <- readTBQueue globalSharedMutableSingletonState
-          xs <- flushTBQueue globalSharedMutableSingletonState
-          pure (x : xs)
+          some_spans <- replicateM (lsMinimumBatchSize cfg) $ readTBQueue globalSharedMutableSingletonState
+          some_more_spans <- flushTBQueue globalSharedMutableSingletonState
+          pure (some_spans <> some_more_spans)
         d_ $ "Got " <> show (length sps) <> " spans"
+        inc 1 sentBatchesCountVar
         reportSpansRes <- tryAny (reportSpans client sps)
         case reportSpansRes of
           Right () ->
diff --git a/stress-test/Main.hs b/stress-test/Main.hs
--- a/stress-test/Main.hs
+++ b/stress-test/Main.hs
@@ -4,6 +4,7 @@
 import Control.Concurrent.Async
 import Control.Monad
 import GHC.Stats
+import LightStep.Diagnostics
 import LightStep.HighLevel.IO (LogEntryKey (..), addLog, getEnvConfig, setTag, withSingletonLightStep, withSpan)
 import System.Exit
 import Text.Printf
@@ -67,4 +68,5 @@
       replicateM_ 1000 $ do
         _ <- async seriousBusinessMain
         threadDelay 10000
+  getDiagnostics >>= print
   putStrLn "All done"
