# The 1 Thread=1 Virtual User Paradigm is flawed The 1 Thread: 1 Virtual User paradigm is the computing model for load generation that consists of the requests made by one virtual user being executed by a single [[Kernel thread]]. This is sometimes called synchronous processing. ## Disadvantages - Limited to a few thousand virtual users - The limitations of this paradigm become apparent after a certain point. - It's more expensive to create and destroy OS or kernel threads - Lots of resources are wasted - When the thread is blocked (such as when a virtual user is executing programmed think time), the entire thread is also idle and cannot do other work - Sleep method is a waste, and in this paradigm, it's the only way to implement think time - Blocking I/Os and waiting for messages - This imposes a hardware ceiling for application performance. - ![](assets/1621807256_45.png) [^01] ![[Why Should You Learn Go#^358154]] ## Advantages - Simplicity ## Load testing tools that do not use this paradigm - [[Gatling]] uses a message-based architecture. Instead of virtual users, Gatling is focused on the actual requests that are sent, which makes a lot of sense because [[User concurrency is an ambiguous measure of throughput]]. - [[k6 (tool)]] [^01]: M. Horowitz, F., Labonte, O. Shacham, K. Olukotun, L. Hammond, C. Batten, C. Moore via [[Keval Patel]] on [Medium](https://medium.com/@kevalpatel2106/why-should-you-learn-go-f607681fad65)