-- Leo's gemini proxy

-- Connecting to shuhao.srht.site:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

Control theory in software systems


2021-07-04


Note: this post is more of a series of questions, rather than answers. If you know the answers to these questions, please email me.


Since my education background is in mechanical engineering, I've had some contact with control theory. Most of this involves applying manually-tuned PID controllers to motors and robots. I've also dabbled a bit with feed-forward PID controllers in the control of the Mach number of a supersonic wind tunnel, although that work remained somewhat incomplete, as I didn't really finish testing my feed-forward controller due to the high cost of testing such a system. All this is to say that: while I'm not a controls engineer by any stretch of the words, I think I understand how control theory can be extremely useful for building "intelligent" behavior into different systems.


While control theory is obviously useful in things like motor and chemical process controls, I have yet to see it widely applicable in software systems. Within software systems designed for the Internet, I feel that a number of places can benefit from the application of control theory, but I haven't seen any one do it. Some of these places includes:


Controlling resource (CPU, memory, network, etc.) utilization by throttling; and

automatic up- and down-scaling of servers based on resource utilization.


I've attempted to look at some of these in the past, but I've always ran into a combination of these problems:


Is the control theory that I learned only applicable to continuous systems?

If I need a discrete version of controller, I don't think my math is good enough to do it myself. Has someone else done this?

Is there some sort of "continuum hypothesis" where if the actions taken by the controllers are "small" enough, that the whole system can be treated as continuous? How would I validate this hypothesis?

Are software systems LTI (linear time-invariant)? Are they close enough to LTI? (Also I need a refresher on LTI...)

How do you model a software system with math? Has someone else done this before?

"Web" software tend to be always changing. How would controllers behave in this environment? Do we need to perform things such as online gain scheduling and online system identification?

What about things like stability?

Would any of this make anything better? Or are the naive algorithms "better"?


From my experience, it feels like most people working in the field are unaware of control theory and its applications (this really also includes myself; also I could have a very large bias, as my sample size is small). Recently, this topic came up on Hacker News[1]. The comments appears to support both my hypothesis that control theory can be useful and that most in the industry people are unaware of it. It also tells me that at least a few people other than me have thought about this, which is a great comfort as I feel very under-qualified to comment on this subject at the present[2].


Also, given that control theory and optimization are closely related to machine learning, and machine learning is all the rage these days: in which area(s) are the people applying control theory and optimization to problems similar to this?


I suppose this is something I'll have to look into a bit more...


[1] Hacker News comments on PID Controller for controlling the number of servers in a data center

[2] This whole post feels like this XKCD comic, with me being the guy suggesting the logarithm...


Tags: software, math, controls, idea



Home


Comments? Email me at shuhao >at< shuhaowu <dot> com.

-- Response ended

-- Page fetched on Fri May 3 12:26:23 2024