Azim, AkramulLiscano, RamiroHasan Khan, Nahid2022-03-082022-03-292022-03-082022-03-292022-02-01https://hdl.handle.net/10155/1422Locks are essential in java-based multi-threaded applications as this mechanism provides a proper solution to synchronizing shared resources. However, improper management of locks and threads can lead to contention; as a result, it causes performance degradation and prevent java application from further scaling. These types of faults are challenging to debug because they are caused by complex interactions among the threads and can only be detected at run time. Nowadays, performance engineers use legacy tools and their experience to determine causes of lock contention. In this research, a clustering-based approach is presented to help identify the type of lock contention fault to facilitate the procedure that performance engineers follow, intending to support developers with less experience eventually. The classifier is based on the premise that if lock contention exists it is reflected as either a) threads spend too much time inside the critical section and/or b) threads’ high frequency access to the locked resources. Our results show that a classifier can be effectively trained to detect lock contention caused by high hold time and contention due to high frequency with which threads send access requests to the locked resources.enJava concurrencyLock-contentionRun-time faultsLinux perf JLMClusteringClustering analysis of lock contention fault types using run-time performance metrics for java intrinsic locksThesis