Time lost in waiting queue (WT) to enter a critical section affects an application concurrency (AC), and impedes the application performance from scaling (AC ∝ 1 / WT) if a workload is bursty and highly parallelized. It is apparent that the wait time to enter a critical section is a function of the CS’s size (CSS) and the number of waiting threads (NWT) i.e. WT ∝ CSS * NWT. Furthermore, the work done (IO completed) is proportional to the trips made through the CSSs (i.e. IOs completed ∝ NWT). Therefore, existence of CSSs in IO path, high wait time, and large CSS’s size affects an application concurrency, and demands the measures to minimize their effects.
i) Global performance/stat counters create small critical sections throughout the IO path. Either the IO path should be free of these small size critical sections and/or per cpu counter/stats should be used to lessen their impact.
ii) …show more content…
Furthermore, these lock managers are accessed by multiple threads (running on different cores), and lock out the write requests which try to modify a region currently being read/written. As a result, these lock managers have to go through all outstanding locks, and they end up creating large critical sections. Here is the list of lock managers in dedup IO path.
a. IOCore lock manager – is used to acquire a read/write lock on a LBA range being read/written by an IO. This lock is held for an IO completion