fork of 9front i guess
Go to file
cinap_lenrek eed90aa0ad kernel: don't cap the minimum sleep time to TK2MS(1) for syssleep()
on HZ 100 systems like pc and pc64, the minium sleep time
was 10ms, which is quite high. the cap isnt really needed
as arch specific timerset() enforces its own limit, but on
a higher resolution.

background:

from Charles Forsyth:

I haven't really got an opinion on it. The 10ms interval was first used on
machines that were much slower.
I thought someone did set HZ to a bigger value, partly to support better
in-kernel timing. I haven't done it because I never had a need for it.
If I were doing (say) protocol implementation in user mode, I'd certainly
reconsider. Sleep itself forces at best ms granularity,
and for some applications that's too big.

initial mail from qwx raising the issue:

> Hello,
>
> I found out recently that sleep(2)'s resolution on 386 and 9front's amd64
> kernel is 10 ms rather than 1 ms.  The reason is that on those kernels,
> HZ is set to 100 rather than say 1000.  In syssleep, we get 1 tich every
> 10 ms.
>
> What is unclear is why.
>
> To paraphrase cinap_lenrek's answer to my question:
>
> In syssleep:
>                 if(ms < TK2MS(1))
>                         ms = TK2MS(1);
>                 tsleep(&up->sleep, return0, 0, ms);
>
> "TK2MS(1)" can be replaced with just "1", and the arch specific
> timerset() routine would do its own capping of the period if it's too
> small for the timer resolution, and make better decisions based on what
> the minimum timer period should be given the latency overhead of the
> given arch's interrupt handling and performance characteristics.
>
> Alternatively, HZ could be raised to 500 or 1000.
>
> It seems it's just trying to prevent excessive context switches and
> interrupts, but it seems somewhat arbitrary.  A ton of syscalls can be
> done in 1 ms, and it's the lowest we can go without changing the unit.
>
>
> What do you think?
>
> Thanks in advance,
>
> qwx
2018-06-10 19:47:21 +02:00
386 ape: floating point improvements (thanks spew) 2018-05-24 13:40:44 +01:00
68000 add signed fixed size integer typedefs 2018-05-12 19:19:52 +02:00
68020 ape: floating point improvements (thanks spew) 2018-05-24 13:40:44 +01:00
acme merging erik quanstros nupas 2017-03-12 17:15:03 +01:00
adm/timezone add Asia_Bahrain timezone, change GMT to match the example in ctime(2) (thanks raiz) 2017-06-05 16:30:30 +02:00
amd64 ape: floating point improvements (thanks spew) 2018-05-24 13:40:44 +01:00
arm ape: floating point improvements (thanks spew) 2018-05-24 13:40:44 +01:00
lib fix incorrect character range in vga/unicode.font leading to missing CJK characters 2018-06-02 07:49:37 +00:00
mips ape: floating point improvements (thanks spew) 2018-05-24 13:40:44 +01:00
power ape: floating point improvements (thanks spew) 2018-05-24 13:40:44 +01:00
power64 add signed fixed size integer typedefs 2018-05-12 19:19:52 +02:00
rc Bfn improvements 2018-05-26 17:17:41 +00:00
sparc ape: floating point improvements (thanks spew) 2018-05-24 13:40:44 +01:00
sparc64 ape: floating point improvements (thanks spew) 2018-05-24 13:40:44 +01:00
spim add signed fixed size integer typedefs 2018-05-12 19:19:52 +02:00
sys kernel: don't cap the minimum sleep time to TK2MS(1) for syssleep() 2018-06-10 19:47:21 +02:00
.hgignore remove accidentally pushed change to .hgignore 2017-04-19 10:16:00 +00:00