Cache thrash is caused by an ongoing computer activity that fails to progress due to excessive use of resources or conflicts in the caching system. A key sign of cache thrashing is high CPU usage or a system that seems to be running very slowly. In thrashing, the computer will typically take the same actions over and over in an attempt to complete the desired task. One process diverts resources from another process, which in turn must take resources from another process in a vicious cycle if the total resources available are insufficient. For example, a translation lookaside buffer (TLB) may have to be completely reloaded to capture data on each sweep if the CPU cannot address the total number of pages involved. This means there is no TLB cache reuse, leading to inefficiency and long load times. In this case, thrashing can be occurring even if there are no page faults.
Cache thrash can sometimes be related to context switching (the procedure to change from one task to another to enable multi-tasking while avoiding any conflict). The underlying cause may be that thread pools are not sized properly in servlet containers or the algorithms used may be a poor match for the type of data being accessed. Methods such as cache coherency protocols that permit multiple caches to share a memory copy of a data item may limit thrashing in some use cases.