In practice, counting units are used everywhere (e.g., in MB/s, the byte is a counting unit), but I am relaying what the SI brochure actually says on this question.
In practice, counting units are used everywhere (e.g., in MB/s, the byte is a counting unit), but I am relaying what the SI brochure actually says on this question.
It lets us produce dimensionally valid formulae for relating request rates (in requests per second) to compute requirements (in CPU seconds per request), data transfer (in bytes per request), and bandwidth (in bytes per second).
I kind of wish software engineering’s computer science underpinnings offered a few more of the kind of notational underpinnings that physics offers mechanical or electronic engineers.
Why don’t we have a standard set of letters for representing data sizes, requests, compute units, etc; and a set of widely known formulae as familiar to every programmer as V=IR is to an electrical engineer?
The only standard symbol computer science has given us (or maybe more accurately that we have taken up) is n, as in O(n), for collection sizes.
I wonder if we can do better?
See also https://www.nist.gov/publications/quantities-and-units-softw...
Instructions per seconds exists but is only useful for comparing tasks on the same hardware and architecture. We saw the abuse of MIPS for comparing machines in the past just as we see it with FLOPS in GPUs today.
MIPS benchmarks like whetstone differ even on the same CPU depend on the language used, compiler used, and the options at compile time. TPC, SPEC and other synthetic benchmarks just succumbed to game theory and usually don't apply to real world loads.
The field you want to look into is "Queuing Theory"
If you are lucky enough that you can assume your system is Markovian you get simple formula like:
mean service time == 1/(mean service rate)
To show just how old it is here is a good paper about M/M/1 queues from 1958 that is still useful today.
Depends what system you’re analysing. But the dimensional validity of that statement is applicable in numerous circumstances.
The medium used for flow isn't important for that calculation at all. Just as it would be for liters per second.
The exist SI unit which specifically applies to queueing problems is the erlang, a unit originally used in telecommunications. Applied to computers, it would translate to CPU use per request.
https://en.wikipedia.org/wiki/Erlang_(unit)
It's considered to be a dimensionless unit (according to wiki), implying that CPUs and requests are also dimensionless.
I think what we are really after is yoctomole Becquerels.
But the mole as a "counting unit" is different from OP's idea of assigning units to things like network requests. The mole is just a shorthand for a number, like a dozen or a score. We don't have different kind of "moles" for, say, carbon atoms and water molecules. Or coffee.
> The applicable SI unit therefore is just the reciprocal second, s^(-1).
That's the hertz.
When you use hertz meaning ‘cycles per second’ it’s far more natural to associate it with an angular velocity of 2pi radians per second - which throws a bit of a spanner in the dimensionless works, and makes it feel like using 1/2pi as a radian makes more sense.
Score another point for tau I guess.
The Becquerel is also s^-1.
It's not algebraically incorrect, but it contains something dangerously wrong connotations about what kind of data it is.
A watt is just a joule per second. Making 1 kWh === 3.6 MJ.
In the US we use miles per gallon, which is the inverse - a ‘per area’.
You see this problem pop up all the time in chemistry, where a mole of some substance and a mole of some other substance are incompatible units. There is no such unit as "mole", only "mole of [whatever]". But there are people who would like to believe that "mole" is a unit.
(In contrast, there is such a unit as "liter", but it isn't used in fuel efficiency ratings.)
If my engine consumes 10lGas/100km when traveling at 100km/h, that means it uses 10lGas/h, or .002778 lGas/s.
If the pipe feeding my engine has a cross sectional area of 10^-6m^2, how fast is the gasoline flowing through that pipe?
Naively I would expect I could divide flow rate by area to get mean velocity. But I’m expecting the result to be in m/s. But if I divide .002778 lGas/s by 10^-6m^2 I get 2778lGas/sm^2.
Unless an lGas is 10^-3mGas^3 and I can measure gas area in mGas^2, so I can get my gas speed in mGas/s?
If you want a mathematical way to capture ‘of gasoline’ the right way to think of it is not as a unit dimension but rather as a basis vector, kinda like ‘up’ or ‘across’.
1m * up is the vector quantity ‘1m up’, which has dimension ‘length’. 1m * across is the vector quantity ‘1m across’ which also has dimension length (we call it a displacement, but it’s a vector in the length dimension). We can add them together even though they point in different directions because they share the same dimension. The result is the vector quantity ‘1m up and 1m across’ and it is also a length.
Similarly 1l * of gas is a vector quantity ‘1l of gas’ with dimension ‘volume’. I can add it to ‘1l of air’ to get ‘1l of gas plus 1l of air’ which is still a vector volume. It might describe the contents of my fuel tank when it’s half empty for example.
This is one of the most salient ways in which different types of power plants differ; it's something that people are very concerned with.