On Wednesday, March 23, 2016 at 2:52:15 PM UTC, Brian Foley wrote: > > commit 135c4cbfae4fdf658fa4ac792487d99ba3a10e52 > Merge: 1025002 2b51613 > Author: Brian Foley <[email protected]> > Date: Wed Mar 23 14:31:48 2016 +0000 > > Merge branch 'stable-2.15' into stable-2.16 > > * stable-2.15 > Update install-quick DRBD requirements to include DRBD 8.4 > Fix memory/perf bug in gnt-cluster verify > Improve luxid QueryInstances performance for large clusters > Optimize LXC hypervisor GetAllInstancesInfo > Add debug logging for time to sendMsg in Haskell servers > Add debug logging to profile python CallRPCMethod > Bracket ConfigWriter writeConfigAndUnlock with debug logging > Bracket client LockConfig calls with debug logging > Get onInotify and onPollTimer to print filepath > Prevent InstanceShutdown from waiting on success > > Manually resolve sendMsg patch conflict. > > Signed-off-by: Brian Foley <[email protected]> > > diff --cc src/Ganeti/UDSServer.hs > index b4f975f,31f2f6c..30ee1c5 > --- a/src/Ganeti/UDSServer.hs > +++ b/src/Ganeti/UDSServer.hs > @@@ -287,14 -286,14 +287,17 @@@ clientToFd client | rh == wh = join (, > -- | Sends a message over a transport. > sendMsg :: Client -> String -> IO () > sendMsg s buf = withTimeout (sendTmo $ clientConfig s) "sending a > message" $ do > + t1 <- getCurrentTimeUSec > - let encoded = UTF8.fromString buf > - handle = wsocket s > - B.hPut handle encoded > + let handle = wsocket s > + -- Allow buffering (up to 1MiB) when writing to the socket. Note that > + -- otherwise we get the default of sending each byte in a separate > + -- system call, resulting in very poor performance. > + hSetBuffering handle (BlockBuffering . Just $ 1024 * 1024) > + hPutStr handle buf > B.hPut handle bEOM > hFlush handle > + t2 <- getCurrentTimeUSec > + logDebug $ "sendMsg: " ++ (show ((t2 - t1) `div` 1000)) ++ "ms" > > -- | Given a current buffer and the handle, it will read from the > -- network until we get a full message, and it will return that >
LGTM
