From c340fff87f7101990cdb48bf324fd4b834a7a9ed Mon Sep 17 00:00:00 2001 From: Michael Zuccarino Date: Fri, 22 Mar 2019 15:38:41 -0700 Subject: [PATCH] Dev docs for threading in Texture (#1319) * Getting started on adding threading by example * writing writing writing * more info * More threading * More more more * Threading * self lock * Some language fixes * Update docs/_docs/development/threading.md Co-Authored-By: mikezucc * fix image references --- docs/_docs/development/threading.md | 355 +++++++++++++++++- docs/static/images/development/threading1.png | Bin 0 -> 8935 bytes docs/static/images/development/threading2.png | Bin 0 -> 18233 bytes docs/static/images/development/threading3.png | Bin 0 -> 62412 bytes 4 files changed, 354 insertions(+), 1 deletion(-) create mode 100644 docs/static/images/development/threading1.png create mode 100644 docs/static/images/development/threading2.png create mode 100644 docs/static/images/development/threading3.png diff --git a/docs/_docs/development/threading.md b/docs/_docs/development/threading.md index 33499aeb2..8692387c8 100644 --- a/docs/_docs/development/threading.md +++ b/docs/_docs/development/threading.md @@ -4,4 +4,357 @@ layout: docs permalink: /development/threading.html --- -

👷👷‍♀️Under construction…

\ No newline at end of file +# Threading + +## At a glance + +The Texture philosophy is about efficient utilization of resources in order to provide a high frame rate user experience. In other words, an almost scientific approach to distributing work amongst threads keeps the Default Run Loop lean to allow user input events and to consume work scheduled on the main dispatch queue. + +There are a few conventions to follow: + +1. Invocations of the UIKit API must happen on the main thread via either `dispatch_get_main_queue()` or with `ASPerformBlockOnMainThread()` +2. Anything else should generally happen on a background thread, with prioritization + +## Run Loop, Threads, and Queues + +A thread is managed by the kernel to execute code. A `dispatch_queue_t` describes a context for an ordered list of blocks to be executed. A queue may utilize specific thread for execution determined by GCD and the kernel. + +A run loop is created per thread if required. Selectors and timers can be attached to a run loop. The main thread's run loop is iterated through automatically, background threads' run loops need to be looped explicitly, and may not necessarily exist without prior access. A thread has only one run loop. + +When using `dispatch_async` for a background queue, GCD (Grand Central Dispatch) will ask the kernel for a thread, where the kernel either creates one, picks an idle thread, or waits for one to become idle. These threads, once created, live in the thread pool. You should never have to call directly to a thread, they are abstracted to you by GCD. + +__Dispatch Queue Playgrounds__ + +`self.queue1 = dispatch_queue_create("multitask.1", DISPATCH_QUEUE_SERIAL);` + +This creates a `dispatch_queue_t`. This is an Objective-C object, managed by ARC. When you startup LLDB, you will notice that there is no designated thread for this queue. That is because a thread is only created if GCD asks the kernel for a thread when work is scheduled. + +``` +dispatch_async(self.queue1, ^{ + NSLog(@"I love robustly distributed work"); +}); +``` + +After performing the above operation, a thread is created to perform your work. A thread creation time is roughly 90 microseconds [according to Apple](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Multithreading/CreatingThreads/CreatingThreads.html#//apple_ref/doc/uid/10000057i-CH15-SW7). After this has executed and you see the statement in the debugger, starting LLDB and running `(lldb) thread list` shows that there should be an additional background thread with no associated queue. This is because a thread is created and added to the pool, however the queue is detached from the thread until needed again. + +``` +dispatch_async(self.queue1, ^{ + while (true) { + NSLog(@"I love robustly distributed work"); + } +}); +``` + +Starting LLDB while the statements are printing and running `(lldb) thread list` shows a list of threads, one which has an associated queue, in this case our queue `multitask.1`. + +``` +dispatch_async(self.queue1, ^{ + printf("block 1\n"); +}); +dispatch_async(self.queue1, ^{ + printf("block 2\n"); +}); +``` + +For this example, we add some autocontinue breakpoints that run a command `thread info` on both of the print statements. Running the program shows the two block invocations are executed on the same thread. + +Let's see what kind of behavior GCD exhibits: + +``` +self.queueA = dispatch_queue_create("multitask.A", DISPATCH_QUEUE_SERIAL); +self.queueB = dispatch_queue_create("multitask.B", DISPATCH_QUEUE_SERIAL); + +dispatch_async(self.queueA, ^{ + printf("A: block 1\n"); +}); +dispatch_async(self.queueA, ^{ + printf("A: block 2\n"); +}); + +dispatch_async(self.queueB, ^{ + printf("B: block 1\n"); +}); +dispatch_async(self.queueB, ^{ + printf("B: block 2\n"); +}); +``` +outputs the following: +``` +thread #2: tid = 0x32a3e6, 0x000000010adf4457 ThreadingFun`__29-[ViewController viewDidLoad]_block_invoke(.block_descriptor=0x000000010adf6090) at ViewController.m:24, queue = 'multitask.A', stop reason = breakpoint 2.1 +thread #3: tid = 0x32a3e7, 0x000000010adf44b7 ThreadingFun`__29-[ViewController viewDidLoad]_block_invoke_3(.block_descriptor=0x000000010adf6110) at ViewController.m:31, queue = 'multitask.B', stop reason = breakpoint 4.1 + +A: block 1 +B: block 1 + +thread #2: tid = 0x32a3e6, 0x000000010adf4487 ThreadingFun`__29-[ViewController viewDidLoad]_block_invoke_2(.block_descriptor=0x000000010adf60d0) at ViewController.m:27, queue = 'multitask.A', stop reason = breakpoint 3.1 +thread #3: tid = 0x32a3e7, 0x000000010adf44e7 ThreadingFun`__29-[ViewController viewDidLoad]_block_invoke_4(.block_descriptor=0x000000010adf6150) at ViewController.m:34, queue = 'multitask.B', stop reason = breakpoint 5.1 + +A: block 2 +B: block 2 +``` + +So here we can see that GCD elects to create two new threads. It will reuse the thread that pertains to the queue. + +So this is when we dispatch work to a queue we created manually. Lets take a look at using `dispatch_get_global_queue` + +Without using LLDB breakpoints to execute `thread info`. Since running LLDB takes a non-deterministic amount of time, the block execution time may vary producing out of order statements. +``` +dispatch_async(dispatch_get_global_queue(QOS_CLASS_DEFAULT, 0), ^{ + printf("block 1\n"); +}); + +dispatch_async(dispatch_get_global_queue(QOS_CLASS_DEFAULT, 0), ^{ + printf("block 2\n"); +}); + +dispatch_async(dispatch_get_global_queue(QOS_CLASS_DEFAULT, 0), ^{ + printf("block 3\n"); +}); + +dispatch_async(dispatch_get_global_queue(QOS_CLASS_DEFAULT, 0), ^{ + printf("block 4\n"); +}); +``` +produces the following output +``` +block 1 +block 2 +block 3 +block 4 +``` +Starting the debugger at the end of the function should show 4 threads, each with the same queue attached. Now GCD is federating your work onto threads on demand. How many threads will it create? + +``` +for (int i=0; i < 100; i++) { + dispatch_async(dispatch_get_global_queue(QOS_CLASS_DEFAULT, 0), ^{ + printf("block %i\n", i); + }); +} +``` +Starting the debugger approximately 500ms after the completion of the for loop shows that there are 64 threads in the thread pool. The behavior you would experience by the thread pool limit is a delay in block execution after the 64th long-running block has been queued. If you are performing a _lot_ of work, make sure to grab the correct priority queue `dispatch_get_global_queue(QOS_CLASS_xxxxxxx, 0)` for your needs. Otherwise you may denial-of-service any other blocks looking to be executed later on. + +An interesting dive into how cores fit into this picture can be found on Mike Ash's [Observing the A11 heterogenous cores](https://www.mikeash.com/pyblog/friday-qa-2017-11-10-observing-the-a11s-heterogenous-cores.html) + +Here we can do a fun test to understand the recycling behavior of GCD +``` +const int64_t kOneMillion = 1000 * 1000; +static mach_timebase_info_data_t s_timebase_info; + +static dispatch_once_t onceToken; +dispatch_once(&onceToken, ^{ + (void) mach_timebase_info(&s_timebase_info); +}); + +for (int i=0; i < 1000; i++) { + uint64_t start = mach_absolute_time(); + dispatch_async(dispatch_get_global_queue(QOS_CLASS_DEFAULT, 0), ^{ + uint64_t end = mach_absolute_time(); + uint64_t elapsed = end - start; + uint64_t nanosec = elapsed * s_timebase_info.numer / s_timebase_info.denom; + printf("%llu ms block %i\n", nanosec / kOneMillion, i); + usleep(10000); + }); +} +``` +Looking at the logs, we can see how GCD reaches a maximum background thread count, varied by CPU. This example was run on the 8 core Macbook Pro +``` +1 ms block 62 +1 ms block 63 +10 ms block 65 +10 ms block 66 +10 ms block 64 +``` + +## ASMainSerialQueue + +The `ASMainSerialQueue` ensures that work can be performed serially on the main thread without being interrupted. The key difference between this and purely using `dispatch_async(dispatch_get_main_queue, block)` is that the main thread can be interrupted between execution of blocks in its queue, where as this interface will execute everything possible in its queue on the main thread before returning control back to the OS. + +This interface calls to `ASPerformBlockOnMainThread`. This interface will lock out other threads attempting to schedule work while it is popping the next block to be consumed on the main thread. New blocks scheduled while existing ones are executing are guaranteed to be executed during that run loop, i.e. before anything else even on main dispatch queue or the Default Run Loop are consumed. + +This should also be used a synchronization mechanism. Since the `ASMainSerialQueue` is serial, you can be sure that it will execute in order. An example would be to queue the following blocks: change view property -> trigger layout update -> animate. Remember that funny situations can occur since execution of work on `ASMainSerialQueue` can early execute blocks that were scheduled later than blocks sent using `dispatch_async(dispatch_get_main_queue())` if the `ASMainSerialQueue` is already consuming blocks. The execution time of the `[ASMainSerialQueue runBlocks]` is uncertain given that more work can be scheduled. + +This is really just a buffer to the main dispatch queue. It behaves the same, except this offers some more visibility onto how much work is scheduled. This interface guarantees that everything scheduled will execute in one operation serially on the main thread. + +## ASRunLoopQueue + +Even deallocation of UIKit objects on the main thread are optimized in Texture. Usually, synchronously, objects are retain counted and freed from memory when appropriate. This just isnt't good enough for a performant framework like Texture. So instead, for each run loop iteration on the main thread, a maximum set of objects can be designated to be freed. This is done by calling `void ASPerformMainThreadDeallocation(id _Nullable __strong * _Nonnull objectPtr)`. Behind the scenes, this is using `ASRunLoopQueue` ensuring that only a maximum amount of objects are deallocated, and that this occurs at the least demanding time on the run loop. Let's break down its initializer: + +``` +// Self is guaranteed to outlive the observer. Without the high cost of a weak pointer, +// __unsafe_unretained allows us to avoid flagging the memory cycle detector. +__unsafe_unretained __typeof__(self) weakSelf = self; +void (^handlerBlock) (CFRunLoopObserverRef observer, CFRunLoopActivity activity) = ^(CFRunLoopObserverRef observer, CFRunLoopActivity activity) { + [weakSelf processQueue]; +}; +``` + +Why `__unsafe__unretained`? + +``` +_runLoopObserver = CFRunLoopObserverCreateWithHandler(NULL, kCFRunLoopBeforeWaiting, true, 0, handlerBlock); +CFRunLoopAddObserver(_runLoop, _runLoopObserver, kCFRunLoopCommonModes); +``` +This creates a run loop observer that can be added to the targeted run loop, in this case always the main thread's run loop. The [kCFRunLoopBeforeWaiting](https://developer.apple.com/documentation/corefoundation/cfrunloopactivity?language=objc) places the call to this observer just after the run loop has finished processing the other inputs and sources and just before it will be put to sleep. This ensures that high priority tasks such as responding to user events such as touches are handled first. + +However, there is one nuance to using `kCFRunLoopBeforeWaiting`, the handler will not be called if there were no inputs or sources to wake up the run loop again in a situation where the deallocation has to be batched. In order to wake the run loop for another cycle, we introduce a no-op source so that there is "work" to be performed for each iteration of the run loop and then invoke the Core Foundation API to iterate the run loop. + +``` +static void runLoopSourceCallback(void *info) { + // No-op +} + +... + +CFRunLoopSourceContext sourceContext = {}; +sourceContext.perform = runLoopSourceCallback; +_runLoopSource = CFRunLoopSourceCreate(NULL, 0, &sourceContext); +CFRunLoopAddSource(runloop, _runLoopSource, kCFRunLoopCommonModes); +``` + +At the end of each `processQueue` invocation, if we still have more objects to process (exceeded the deallocation batch size), then we use this at the end of the `processQueue` to begin another run loop iteration. + +``` +if (!isQueueDrained) { + CFRunLoopSourceSignal(_runLoopSource); + CFRunLoopWakeUp(_runLoop); +} +``` + +## Locks and Safety + +Carrying on from our last example, we have to make sure that during our processing of the queue for objects that need to be deallocated remains untampered to avoid bounds errors. The execution of this function must be synchronous. In this particular example, we can guarantee that the execution of this will always happen on a designated run loop's single thread, and therefore synchronously. However, we want to design robust software that won't deadlock or crash. + +__Method 1__ + +Looking at `-(void)processQueue`, we have the following locking convention: +``` +@interface ASRunLoopQueue () { + ASDN::RecursiveMutex _internalQueueLock; +} + +ASSynthesizeLockingMethodsWithMutex(_internalQueueLock) // Texture macro for creating the lock + +- (void)processQueue +{ + { + ASDN::MutexLocker l(_internalQueueLock); + + // ... array operations + } +} +``` + +`ASDN::MutexLocker l(_internalQueueLock);` will lock the recursive mutex. This prevents other threads other than the current thread from entering this routine again, which is fine since a thread serially executes. The lock will free itself once the stack frame is popped. + +Since this lock is also shared, it will prevent other routines from entering until this lock is released. This is mandatory for safe synchronization of shared objects between threads. + +__Method 2__ + +An alternative method is to manage the duration of the lock hold manually rather than using the runtime and scope. You must remember to unlock. + +``` +@implementation ASDeallocQueue { + ASDN::Mutex _lock; +} + +- (void)releaseObjectInBackground:(id _Nullable __strong *)objectPtr +{ + NSParameterAssert(objectPtr != NULL); // do I actually need to lock ? + // other conditions or non-shared tasks + _lock.lock(); + sharedObject.modify(newData); + _lock.unlock(); +} +``` + +__Method 3__ + +`ASThread` provides `ASLockScopeSelf()`. This is a convenience over `ASLockScopeUnowned()`. This will unlock itself once the scope in which the lock was created is released. Only use this when you are confident that the lock should remain until scope is complete. You can only have one lock defined for `self`, thus it will block all other branches. + +``` +#define ASLockScopeUnowned(nsLocking) \ + __unsafe_unretained id __lockToken __attribute__((cleanup(_ASLockScopeUnownedCleanup))) = nsLocking; \ + [__lockToken lock]; + +ASDISPLAYNODE_INLINE void _ASLockScopeCleanup(id __strong * const lockPtr) { + [*lockPtr unlock]; +} +``` + +Usage example +``` +- (ASImageNode *)imageNode +{ + ASLockScopeSelf(); + if (!_imageNode) { + _imageNode = [[ASImageNode alloc] init]; + [_imageNode setLayerBacked:YES]; + } + return _imageNode; +} +``` + +## Thread Contention + +Although locks are critical to guaranteeing safer multithreading synchronization, they must be used with some caution, as threads are slept if they can not hold the lock immediately. In order to sleep/wake a thread, many CPU cycles are consumed. Some `std::mutex` implementations are able to spinlock for a bit at first to combat the overhead of sleeping and waking a thread for failed lock holds. However, the performance loss here is a necessary sacrifice in order to attain thread safety. In order to make up for the potential loss in performance, the programmer should design as little opportunity for contention as possible, and to lock only the smallest amount of work. + +An interesting investigation can be found [here](https://stackoverflow.com/a/49712993/2584565) + +> Bottom line, a mutex is implemented with atomics. To synchronize atomics between cores an internal bus must be locked which freezes the corresponding cache line for several hundred clock cycles. + +## Other Threading Practices in Texture + +__Main Thread/ UIKit API__ + +API | Description | +--- | --- | +`ASDisplayNodeAssertMainThread();` | Place this at the start of the every function definition that performs work synchronously on the main thread. +`ASPerformBlockOnMainThread(block)` | If on main thread already, run block synchronously, otherwise use `dispatch_async(dispatch_get_main_queue(block))` +`ASPerformMainThreadDeallocation(&object)` | Schedule async deallocation of UIKit components +`ASPerformBackgroundDeallocation(&object)` | Schedule async deallocation of __non-UIKit__ objects +`ASPerformBlockOnBackgroundThread(block)` | Perform work on background + + +## Threading by example + +Let's take a look at collection view. UIKit calls (such as batch updates) can be invoked from the background due to network calls returning with fresh models. These models are then used to calculate a change set used by the collection view to perform a batch update. This batch update calls into UIKit API for insertions, deletions, and moves in one continuous operation that modifies the view hierarchy. As we know, all UIKit operations must occur on the main thread. How can we design the interface to get the most efficient distribution of work? + +So we have the following situation: +1. A data source that talks and responds to events from the network +2. A data source that calculates a change set for the collection view +2. A collection view that performs batch updates, calling into UIKit API +3. Batch updates must happen serially, as they use transformations rather than clearingAllData + +`ASDataController` + +This is our data source that talks to the network. It doesn't really in Texture, but we can pretend that this interface is receiving invocations from a network object. The network object invokes a completion block created by the `ASDataController` in a background thread context. This is correct behavior, because we want non-UI related work to happen off of the main thread as much as possible. + + Since the data source still needs to have usable data while the network and calculations are occurring, we keep two different data structures: `pendingMap` and `visibleMap`. The `visibleMap` is node map for display on the collection view and the `pendingMap` is an ephemeral for calculating the change set. The change set is the exact least amount of work required to shuffle the collection view items from the old set to the new set. + +__Editing Transaction Queue__ + +The Editing Transaction Queue is an example of using a background queue to schedule work that may be long running in a way that won't block the application from receiving callbacks from the main thread's Run Loop or other main thread only work such as calls to UIKit API. + +This is a `dispatch_queue_t` that is privately held by each UICollectionView. The work scheduled gets performed on a background thread. + +__Describing the Batch Update flow__ + + +![Threading1](/docs/static/images/development/threading1.png) + +Starting with a simple example, let's say everything was on the main thread. The app would then appear unresponsive to the user until the entire flow finished. This is because the main thread's run loop (which receives operating system events for input) and the main thread dispatch queue compete for service time on the main thread. Execution goes back and forth between the run loop and the main dispatch queue while work is present in either. Now you can see that the work your code wants to schedule competes for time with system and user input events. + +Let's identify the items that are not critical for execution on the main thread and dispatch those as blocks onto a background thread. + + +![Threading2](/docs/static/images/development/threading2.png) + +Ok, this is starting to look better. The main thread now only performs the minimal amount of work. This means the app will feel responsive to the user as it is able to consume Run Loop events with little interruption. However, a lot of the background work is still being done serially in one long running operation. If the network is the longest running task in this sequence, you would want to make sure they get fired off as early as possible. Let's also introduce another condition, we have a NSTimer running which injects a "hint" cell into the collection view. This is to demonstrate how the editing transaction queue is consumed serially. + +The reason we must design the work to consume the editing transaction queue serially alongside the main queue is change sets must represent a transformation of the current data set in the collection view. This means that each time a `performBatchUpdate` is intended to be performed, it _must_ calculate using the latest data set used for display in the collection view. In this following image, this means that change sets can only be calculated from `A -> B`, and then when `performBatchUpdate` task is fully finished, another calculation can be done from `B -> C`. Consider data sets `B` and `C` coming in right after the other. If the queues consumed concurrently, then you would get a change set for `A -> B` and `A -> C`. The collection view will crash if a change set is requested for `A -> C`, while a `performBatchUpdate` is updating the collection view to reflect `A -> B` with a `A -> C` operation is queued. All this means that we create a pseudo-lock on the `editingTransactionQueue` by consuming it one operation at a time, either when the queue is empty or when an operation has finished as called by the completed `performBatchUpdate` invocation. + + +![Threading3](/docs/static/images/development/threading3.png) + +One small note is these diagrams are missing a representation of the main dispatch queue. Remember this is separate from the main thread. It is a data structure operated by GCD similarly to ASMainSerialQueue which handles execution to the main thread. All the work that goes from the background threads to the main thread is first put onto the main dispatch queue when using `dispatch_async(dispatch_get_main_queue())`. +. diff --git a/docs/static/images/development/threading1.png b/docs/static/images/development/threading1.png new file mode 100644 index 0000000000000000000000000000000000000000..a1ed3e787e0c59ad52cfa2117086660afa51b0a1 GIT binary patch literal 8935 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 ZXruAHdrPNpbN;}x&&JBZ5^e6A@L&8_=D+{| literal 0 HcmV?d00001 diff --git a/docs/static/images/development/threading2.png b/docs/static/images/development/threading2.png new file mode 100644 index 0000000000000000000000000000000000000000..26056d001d5703136ca7defef20c31be25a3ed49 GIT binary patch literal 18233 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 literal 0 HcmV?d00001