konstante CPU-Last erzeugen



  • Ich hab da keine Entscheidungsgewalt. Jeder weiß hier, dass das Quatsch ist das so zu machen. Niemand hat aber die Zeit, das ins Realtime zu ziehen 🙂



  • gibt real time layer für windows. zeitkritische anwendungen für windows zu entwickeln ist zwar banane, aber billig ^^



  • dEUs schrieb:

    Ich hab da keine Entscheidungsgewalt. Jeder weiß hier, dass das Quatsch ist das so zu machen. Niemand hat aber die Zeit, das ins Realtime zu ziehen 🙂

    Ok 😃
    Dann versuch ich mal auch was produktives beizutragen: krahm dein alle x ein sleep programm noch mal raus und mach ein
    SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL);
    SetProcessPriorityBoost(GetCurrentProcess(),TRUE);
    vorne ran.



  • thordk schrieb:

    gibt real time layer für windows. zeitkritische anwendungen für windows zu entwickeln ist zwar banane, aber billig ^^

    Ich weiß. Auch dafür hat niemand Zeit.



  • CMatt schrieb:

    dEUs schrieb:

    Ich hab da keine Entscheidungsgewalt. Jeder weiß hier, dass das Quatsch ist das so zu machen. Niemand hat aber die Zeit, das ins Realtime zu ziehen 🙂

    Ok 😃
    Dann versuch ich mal auch was produktives beizutragen: krahm dein alle x ein sleep programm noch mal raus und mach ein
    SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL);
    SetProcessPriorityBoost(GetCurrentProcess(),TRUE);
    vorne ran.

    Hilft auch nix...



  • dEUs schrieb:

    CMatt schrieb:

    dEUs schrieb:

    Ich hab da keine Entscheidungsgewalt. Jeder weiß hier, dass das Quatsch ist das so zu machen. Niemand hat aber die Zeit, das ins Realtime zu ziehen 🙂

    Ok 😃
    Dann versuch ich mal auch was produktives beizutragen: krahm dein alle x ein sleep programm noch mal raus und mach ein
    SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL);
    SetProcessPriorityBoost(GetCurrentProcess(),TRUE);
    vorne ran.

    Hilft auch nix...

    Das du ein dual core system? (auf meinem single core reduzieren die 2 zeilen von oben as steurung nähmlich von ~20% auf 5)



  • Nein, ein single core.
    Zeig mal den ganzen Code von dir.



  • int main()
    {
    	SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL);
    	SetProcessPriorityBoost(GetCurrentProcess(),TRUE);
    	while(1)
    	{
    		for(int x=0;x<999999;x++);
    		Sleep(1);
    	}
    	return 0;
    }
    

    als debug compliert, damit der compiler das unnütze zeug nicht einfach raus-optimiert => erbit ne last von 20-25% bei mir

    (wobei ich von der Last spreche die im task manager angezeigt ist, also durschnitt, in echt sind das nählich keine 20% CPU load sondern 999999 mal vollgas dann 1ms pause)



  • Ich schmeiß auch mal was in die Runde:
    DMA bei der Platte ausschalten und Dateien hin und her kopieren, k.A. ob das evtl. ne halbwegs konstante CPU-Last erzeugt...



  • Folgendes scheint gut zu klappen, auch ohne riesige Mengen von Threads.

    10 Threads: 3% CPU-Auslastung
    50 Threads: 35% CPU-Auslastung
    100 Threads: 80% CPU-Auslastung

    #include <windows.h>
    #include <iostream>
    #include <cmath>
    
    float x;
    
    DWORD WINAPI threadProc(void*)
    {
    	while(true)
    	{
    		for(int i = 0; i < 1000; i++)
    		{
    			x += sinf(x);
    			x *= sqrtf(fabsf(x));
    			x /= cosf(x) + 1.0f;
    			x = powf(fabsf(x), 2.75f);
    		}
    
    		Sleep(1);
    	}
    }
    
    int main()
    {
    	for(int i = 0; i < 100; i++)
    	{
    		DWORD id;
    		CreateThread(0, 16, threadProc, 0, STACK_SIZE_PARAM_IS_A_RESERVATION, &id);
    	}
    
    	std::cin.get();
    
    	return 0;
    }
    

Anmelden zum Antworten