Core2duo - Kern Abschalten
#1
geschrieben 21. Mai 2007 - 20:38
wie kann ich beim Core2Duo (E6600) einen Kern abschalten? Kann ich das über Bios oder Betriebssystem machen?
Falls übers OS, dann unter Linux
Anzeige
#2
geschrieben 21. Mai 2007 - 21:05
Ich denke nicht das man sowas machen kann.Wieso überhaupt?Macht ja garkein Sinn seine CPU zu "beschneiden".
mfg
#3
geschrieben 21. Mai 2007 - 21:16
Deswegen will ich von Haus aus einen Kern abstellen.
Es geht mit CPU-Affinität, das weiß ich. Nur weiß ich nicht, wie ich das unter Linux zum laufen bringe
#4
geschrieben 21. Mai 2007 - 22:06
Zitat
doch macht schon sinn um Strom zu sparen aber die C2Ds sind ja schon effizent.
Dieser Beitrag wurde von Spoo bearbeitet: 21. Mai 2007 - 22:07
#5
geschrieben 21. Mai 2007 - 22:09
bei windows gehts ohne probleme über den taskmanager, linux kp..
also die linux leute mal melden
#6
geschrieben 21. Mai 2007 - 22:09
#7
geschrieben 21. Mai 2007 - 22:14
Unter Windows XP/2003 kannst Du in der boot.ini den Parameter /ONECPU oder /NUMPROC=x an die Startzeile anhängen, damit Windows nur eine CPU bzw. Core verwendet (x = Anzahl der verweneten CPU/Kerne). In Vista geht das auch über bcdedit.
Aber Linux? Gibt da mit Sicherheit auch einen Parameter, dem man dem kernel übergeben kann, damit der nur eine CPU bzw. Kern verwendet, nur kenne ich diesen nicht. Muss mal suchen.
Hier hätte ich was:
nosmp : Tells an SMP kernel to act as a UP kernel.
maxcpus=x : Maximum number of processors that an SMP kernel should make use of
Musst jetzt nur noch herrausfinden, wie Du nosmp bzw. maxcpus= Deinem Kernen übergeben kannst.
Dieser Beitrag wurde von DK2000 bearbeitet: 21. Mai 2007 - 22:25
---
Ich bin ein kleiner, schnickeldischnuckeliger Tiger aus dem Schwarzwald.
Alle haben mich ganz dolle lila lieb.
#8
geschrieben 21. Mai 2007 - 22:17
1: sched_setaffinity()
2. taskset
Doch irgendwie bekomm ich das nicht hin
Dieser Beitrag wurde von free bearbeitet: 21. Mai 2007 - 22:23
#9
geschrieben 21. Mai 2007 - 22:36
http://www.die.net/d.../taskset.1.html
Allerdings habe ich da was mit erschrecken festgestellt.
Das Prog läuft auf einem Kern schneller, als auf beiden (mit 2 Threads!!!)
Liegt das am Synchronisationsaufwand und Overhead, oder wie ist sich das zu erklären?
Anbei noch der Code
Zitat
#include <stdlib.h>
#include <pthread.h>
volatile int x = 0, y = 0;/* 'volatile' is important! */
pthread_mutex_t x_mutex, y_mutex;
#define ITERATIONS 5000000
/* good value for Athlon 900, eventually adjust for faster/slower processors */
void *thread_routine_0 (void *data)
{
int n;
for (n = 0; n < ITERATIONS; n++) {
pthread_mutex_lock (&x_mutex);
pthread_mutex_lock (&y_mutex);
x++;
y += 2;
pthread_mutex_unlock (&x_mutex);
pthread_mutex_unlock (&y_mutex);
}
return NULL; /* we do not want to return any data */
}
void *thread_routine_1 (void *data)
{
int n;
for (n = 0; n < ITERATIONS; n++) {
pthread_mutex_lock (&x_mutex);
pthread_mutex_lock (&y_mutex);
x++;
y += 2;
pthread_mutex_unlock (&x_mutex);
pthread_mutex_unlock (&y_mutex);
}
return NULL; /* we do not want to return any data */
}
int main () {
pthread_t threads[2];
int n;
/* Init mutexes... */
pthread_mutex_init (&x_mutex, NULL); /* 'NULL' = options (defaults are ok) */
pthread_mutex_init (&y_mutex, NULL); /* 'NULL' = options (defaults are ok) */
/* Create threads */
if (pthread_create (&threads[0], NULL, thread_routine_0, NULL) != 0)
{
puts ("Error creating thread #0!");
exit (3);
}
if (pthread_create (&threads[1], NULL, thread_routine_1, NULL) != 0)
{
puts ("Error creating thread #1!");
exit (3);
}
/* Join the threads (wait until they finished) */
for (n = 0; n < 2; n++)
pthread_join (threads[n], NULL);
/* Cleanup mutexes... */
pthread_mutex_destroy (&x_mutex);
pthread_mutex_destroy (&y_mutex);
/* Print the final values of x and y */
printf ("x = %i, y = %i\n", x, y);
return 0;
}
#10
geschrieben 22. Mai 2007 - 21:42
unter hyper-threading.
gruß,
markus
#11 _deen_
geschrieben 22. Mai 2007 - 21:54
Mir fällt spontan nur folgende Möglichkeit ein:
su cd /usr/src/linux make menuconfig Processor type and features ---> [ ] Symmetric multi-processing support (Also Haken raus) Exit -> Exit -> Save make mount /boot cp arch/$ARCHITEKTUR/boot/bzImage /boot/kernel-$KERNELVERSION-1core $TEXTEDITOR /boot/grub/grub.conf Hier dann 'nen neuen Eintrag für den neuen Kernel anlegen. In Grub kannst du dann den Kernel auswählen.
Dieser Beitrag wurde von deen bearbeitet: 22. Mai 2007 - 22:05
#12
geschrieben 22. Mai 2007 - 22:05
hf
es gibt meines wissens nur 1 board bei dem man einen kern abschalten kann. wobei man aber nicht beeinflussen kann welcher abgeschaltet wird. p5w64 von asus.
hf
#13
geschrieben 22. Mai 2007 - 23:06
http://www.die.net/d.../taskset.1.html
Dort kann man genau angeben, welche CPUs verwendet werden sollen.
#14
geschrieben 23. Mai 2007 - 15:52
Zitat
nö, jetz ehrlich. das geht bei mir so. hab n p5vd1-x von asus und n pentium d.
Mir is schon klar das ht eigentlich die technik vom p4 is. Warum das da so heißt weiß ich auch ned. aber es funzt.
#15
geschrieben 23. Mai 2007 - 16:13
Zitat
Bei vielen neueren Boards kann man die Kerne ausschalten und auch aussuchen ob Kern 0 oder Kern 1 laufen soll.