1. A system for predicting performance of a multi-threaded software application in the presence of resource bottlenecks, the system comprising: one or more processors; and a memory staring processor-executable instructions comprising instructions that, when executed by the one or more processors, configure the one or more processors to: represent one or more queuing networks corresponding to resources, the resources being employed to run the multi-threaded software application, wherein the resources comprise hardware resources and software resources, wherein the one or more queuing networks represent contention for resources, and wherein the one or more queuing networks correspond to at least one of a hardware queuing network of a software queuing network; identify a relationship between the software queuing network and the hardware queuing network based on at least one of a predetermined service demand, the software queuing network, and the hardware queuing being associated with the represented one or more queuing networks, wherein the relationship comprises at least one of utilization and sharing of the software resources with respect to the hardware resources and with respect to a predetermined value of the predetermined service demand, wherein the instructions to identify the relationship between the software queuing network and the hardware queuing network based on the predetermined service demand further comprises instructions to: obtain one or more blocked threads associated with a critical section based on the predetermined service demand, the blocked threads being retained to provide comparison with iterative blocked threads, wherein the number of blocked threads at the critical section is the number of threads awaiting to enter the critical section; obtain a residence time at each of the hardware resources based on the predetermined service demand; update based on the residence time, a critical section service demand to reflect a waiting time for the hardware resources; and compare the one or more blocked threads with the iterative blocked threads and the residence time; detect, based on the one or more queuing networks, a concurrency level associated with encountering of a first resource bottleneck, wherein the concurrency level is detected by checking a number of threads accessing the multi-threaded software application; determine, based on the concurrency level, a plurality of performance metrics associated with the multi-threaded software application; and predict the performance of the multi-threaded software application based on the plurality of performance metrics.