On (2012-11-10 10:43 +0200), Saku Ytti wrote: > > > So each IOSd process 'show proc cpu' are separate threads to linux? > > Yep. The "show platform software..." commands are used to look at things in > > To be honest I'm very sceptical about this. I fully accept that IOSd is > multithreaded. But I'm having difficulties accepting that each IOSd process > would be own thread scheduled by Linux and that native/IOS > run-to-completion scheduler isn't used at all.
Someone who has ASR1004 just ran 'ps auxH' and it's running 3 threads. So IOS XE control-plane is for most parts run-to-completion and relies on classic IOS scheduler and memory-management. I'm not saying this is inherently bad, it is least overhead way to do it, but it also sets requirement for code quality unrealistically high. I'm pretty sure it would be easier to start from scratch and loan IOS BGP, ISIS, OSPF etc code to new project than to try to make IOS be pre-emptive and SMP safe. I'm also not saying IOS XE is bad, JunOS is same design and many consider JunOS good design (I'm not one of them). I think XR and NX-OS are better, more modern examples how to do things now, when we have some extra CPU time in control-plane. It would be interesting ti know what are the roles of these 3 threads. If I'd have to guess, one is IOS control-plane, one is emulation of IOS interrupts and one is abstraction for hardware forwarding. But this is likely far off. -- ++ytti