runtime: investigate possible Go scheduler improvements inspired by Linux Kernel's CFS
***First, please let me pay tribute to your contributions. You guys are awesome! And Go is so marvelous!*** It has been more than ten years, and Go has already been very successful. So, I think it is time to give Go a better scheduler -- maybe like the [CFS scheduler](https://en.wikipedia.org/wiki/Completely_Fair_Scheduler) of Linux kernel. The current implementation of the scheduling strategy of the Go runtime scheduler is basically Round-Robin scheduling. But in practical application scenarios, priority relationships may need to exist between different types of tasks or even between tasks of the same type. For example, if we want to use Go to implement a storage engine, in general, I/O tasks should have higher priority than any other CPU intensive tasks. Because in this case, the system bottleneck is more likely to be in disk I/O, not CPU. For another example, we may use Go to implement a network service, which is required to ensure the latency of some certain lightweight tasks even while other goroutines are quite CPU intensive. However, in the current implementation of Go runtime, if there are a certain number of CPU intensive tasks that need to run for a long time, it will inevitably impact the scheduling latency. Therefore, we need a real mature Go scheduler like the CFS scheduler in kernel. From another perspective, we could compare the thread model provided by kernel with the goroutine model provided by Go. In addition to the inherent low-cost and high-concurrency
Posted by hnes on Feb 8, 2022, 2:02 PM
Tags
Related issues
- there are tons of TLDs that are cheap I'm not even sure what you are offering after reading this, but cloud is an even harder sell becau...
- > One can't expect that every driver package submission from every vendor is thoroughly vetted every time, this is a matter of trust and ...
- Too expensive for a worse vehicle than the Model Y (with incentives, it was a >$20K difference).
- Starlink only has 10 Million customers, too expensive for most countries already.
- The U7 Lite only does 2x2 MIMO.
- Iranians use VPNs simply because they want to access the internet.
Raise real-world problems, find people facing the same issue, and discuss solutions.2,500 issues0 comments
pricing (Network)
there are tons of TLDs that are cheap I'm not even sure what you are offering after reading this, but cloud is an even harder sell becau...
> One can't expect that every driver package submission from every vendor is thoroughly vetted every time, this is a matter of trust and ...
Too expensive for a worse vehicle than the Model Y (with incentives, it was a >$20K difference).
Starlink only has 10 Million customers, too expensive for most countries already.
The U7 Lite only does 2x2 MIMO.
Iranians use VPNs simply because they want to access the internet.
> When you don't want the ads and privacy invasion, you don't visit the website.
A vantage point from a very long time ago: The big social media services are pining for the days of CompuServe and Prodigy.
runtime: investigate possible Go scheduler improvements inspired by Linux Kernel's CFS
***First, please let me pay tribute to your contributions. You guys are awesome! And Go is so marvelous!*** It has been more than ten years, and Go has already been very successful. So, I think it is time to give Go a better scheduler -- maybe like the [CFS scheduler](https://en.wikipedia.org/wiki/Completely_Fair_Scheduler) of Linux kernel. The current implementation of the scheduling strategy of the Go runtime scheduler is basically Round-Robin scheduling. But in practical application scenarios, priority relationships may need to exist between different types of tasks or even between tasks of the same type. For example, if we want to use Go to implement a storage engine, in general, I/O tasks should have higher priority than any other CPU intensive tasks. Because in this case, the system bottleneck is more likely to be in disk I/O, not CPU. For another example, we may use Go to implement a network service, which is required to ensure the latency of some certain lightweight tasks even while other goroutines are quite CPU intensive. However, in the current implementation of Go runtime, if there are a certain number of CPU intensive tasks that need to run for a long time, it will inevitably impact the scheduling latency. Therefore, we need a real mature Go scheduler like the CFS scheduler in kernel. From another perspective, we could compare the thread model provided by kernel with the goroutine model provided by Go. In addition to the inherent low-cost and high-concurrency
Comments (0)
No comments yet. Start the discussion.