From 69c9a5a49b100214f40074cef14e3a3db125df2e Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 29 Sep 2017 12:39:50 -0400 Subject: [PATCH 1/3] Use longer delay when batch processing incoming messages. // FREEBIE --- SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m b/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m index 5fe505c7b..363ef68b2 100644 --- a/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m +++ b/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m @@ -338,7 +338,7 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo // This delay won't affect the first message to arrive when this queue is idle, // so by definition we're receiving more than one message and can benefit from // batching. - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1f * NSEC_PER_SEC)), self.serialQueue, ^{ + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.f * NSEC_PER_SEC)), self.serialQueue, ^{ [self drainQueueWorkStep]; }); } From 0a081f7dcc33065c6cb0e19bce0f3bc011faf2e4 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 29 Sep 2017 12:41:27 -0400 Subject: [PATCH 2/3] Use longer delay when batch processing incoming messages. // FREEBIE --- SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m | 3 +++ SignalServiceKit/src/Messages/OWSMessageHandler.h | 2 -- SignalServiceKit/src/Messages/OWSMessageHandler.m | 9 --------- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m b/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m index 363ef68b2..b790e5e2b 100644 --- a/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m +++ b/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m @@ -317,6 +317,9 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo { AssertOnDispatchQueue(self.serialQueue); + // We want a value that is just high enough to yield perf benefits. + const NSUInteger kIncomingMessageBatchSize = 16; + NSArray *jobs = [self.finder nextJobsForBatchSize:kIncomingMessageBatchSize]; OWSAssert(jobs); if (jobs.count < 1) { diff --git a/SignalServiceKit/src/Messages/OWSMessageHandler.h b/SignalServiceKit/src/Messages/OWSMessageHandler.h index 28534c0e3..cb8967b5b 100644 --- a/SignalServiceKit/src/Messages/OWSMessageHandler.h +++ b/SignalServiceKit/src/Messages/OWSMessageHandler.h @@ -4,8 +4,6 @@ NS_ASSUME_NONNULL_BEGIN -extern const NSUInteger kIncomingMessageBatchSize; - @class OWSSignalServiceProtosContent; @class OWSSignalServiceProtosDataMessage; @class OWSSignalServiceProtosEnvelope; diff --git a/SignalServiceKit/src/Messages/OWSMessageHandler.m b/SignalServiceKit/src/Messages/OWSMessageHandler.m index 59450d7ca..b2915930b 100644 --- a/SignalServiceKit/src/Messages/OWSMessageHandler.m +++ b/SignalServiceKit/src/Messages/OWSMessageHandler.m @@ -7,15 +7,6 @@ NS_ASSUME_NONNULL_BEGIN -// We need to use a consistent batch size throughout -// the incoming message pipeline (i.e. in the -// "decrypt" and "process" steps), or the pipeline -// doesn't flow smoothly. -// -// We want a value that is just high enough to yield -// perf benefits. The right value is probably 5-15. -const NSUInteger kIncomingMessageBatchSize = 10; - // used in log formatting NSString *envelopeAddress(OWSSignalServiceProtosEnvelope *envelope) { From 08e560f9695dc0654b39855ef85b38099e3ae210 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 29 Sep 2017 14:38:32 -0400 Subject: [PATCH 3/3] Respond to CR. // FREEBIE --- SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m b/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m index b790e5e2b..5d4f4673e 100644 --- a/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m +++ b/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m @@ -318,7 +318,7 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo AssertOnDispatchQueue(self.serialQueue); // We want a value that is just high enough to yield perf benefits. - const NSUInteger kIncomingMessageBatchSize = 16; + const NSUInteger kIncomingMessageBatchSize = 32; NSArray *jobs = [self.finder nextJobsForBatchSize:kIncomingMessageBatchSize]; OWSAssert(jobs); @@ -341,7 +341,7 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo // This delay won't affect the first message to arrive when this queue is idle, // so by definition we're receiving more than one message and can benefit from // batching. - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.f * NSEC_PER_SEC)), self.serialQueue, ^{ + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5f * NSEC_PER_SEC)), self.serialQueue, ^{ [self drainQueueWorkStep]; }); }