To jest kontynuacja mojego poprzedniego question. Używam widelca do tworzenia procesu potomnego. Wewnątrz dziecko, daję polecenie, aby uruchomić proces następująco:czas potrzebny na rozwidlenie procesu potomnego
if((childpid=fork())==0)
{
system("./runBinary ");
exit(1)
}
Moja runBinary posiada funkcjonalność mierzenia ile czasu trwa od początku do końca.
Co mnie zaskakuje, to że po uruchomieniu polecenia runBinary bezpośrednio na linii poleceń, zajmuje to około 60 sekund. Jednak gdy uruchamiam go jako proces potomny, potrzeba go więcej, np. ~ 75 lub więcej. Czy jest coś, co mogę zrobić, czy robię obecnie coś złego, co prowadzi do tego?
Dzięki za pomoc z góry. WIĘCEJ SZCZEGÓŁÓW: Używam serwera RHEL dla Linuxa z 24 rdzeniami. Zmierzam czas procesora. W tym samym czasie widzę tylko 8 potomków (kolejno), z których każdy jest związany z innym rdzeniem, używając zestawu zadań (nie pokazanego w kodzie). System nie został załadowany, z wyjątkiem mojego własnego programu.
Może to trwa 15 sekund do procesu macierzystego do spania, aby obudził o/s po wyjściu dziecka? –
@ JonathanLeffler możesz powiedzieć, jak to potwierdzić? Dzięki – user984260
@sarnold faktycznie jest runBinary, który sam mierzy czas. – user984260