[FUG-BR] FreeBSD desaparecendo com um núcleo na CPU

Otacílio otacilio.neto em bsd.com.br
Sexta Novembro 9 10:41:22 BRST 2012


On 09/11/2012 09:24, Marcelo Gondim wrote:
> Em 09/11/12 08:29, Eduardo Lemos de Sa escreveu:
>> Caríssimos
>>
>> Incialmente, desculpe-me o subject estranho deste email: escolhi-o para
>> chamar a atenção porque o caso é realmente muito estranho.
>>
>> Há tempos (mais de 1 ano) tenho rodado o FreeBSD/amd64 (iniciei com o 8.0 e
>> agora estou no 8.3) em uma máquina com placa-mãe Asus M4a88t-v evo/usb3 e
>> processador amd 1075t-6x sem qualquer problema ou ocorrênciaa estranha. Há
>> pouco mais de um mês, notei que a máquina travava (teclado, mouse ou
>> placa-rede estavam totalmente paralizados), todas as quartas-feiras, pela
>> manhã. Eu sei, estranho é (será que inventaram o virus quarta-feira 11, o
> 
> Mesmo que você desligue e ligue a máquina na terça à noite, quando chega 
> na quarta pela manhã ela trava?
> Tem horário certo também?
> Isso parece algo que esteja rodando no cron. Já verificou ele?
> 
>> sucessor do sexta-feira 13 para sistemas unix :-)?. No início, eu achei que
>> pudesse ser a faxineira (que todas as quartas-feira limpa a sala, no
> Ahahaha é mesmo, pior que isso acontece. A empresa para a qual trabalhei 
> uns anos atrás, tinha um cliente que reclamava que o sistema sempre caía 
> todos os dias por volta das 12:00 e voltava uns 15 à 20 minutos depois.
> Como o cliente era perto de onde eu morava, marquei uma visita perto das 
> 12:00, cheguei lá e fiquei sentado esperando dar o horário do problema. 
> Quando foi por voltas das 12:05 me entra um funcionário deles apressado 
> e dizendo: fome, muita fome. O dito cujo me abre a geladeira, cata uma 
> marmita térmica, tira o switch principal da rede da tomada, como quem 
> desliga uma cafeteira e coloca a marmita dele pra esquentar. HAhaHAhaH
> Finalmente descobrimos o mistério!
> Haviam outros casos também que o sistema parava sempre as 17:30 e aí 
> quando fomos checar era a funcionária que queria sair mais cedo e dizia 
> para o chefe que o sistema estava fora. rsrsrs
> 
>> período da manhã), daí resolvi deixar a máquina desligada de terça à noite
>> até o momento da faxina acabar. De nada adiantou, e o micro congelava o
>> video e não aceitava mais comandos. Troquei então a placa de video (que
>> geralmente é a culpada quando a tela congela), e de nada adiantou.
>> O mais estranho é que, de uns tempos para cá (não sei precisar a data), o
>> top mostrava processamento nos núcleos de 0 a 4 (=5 núcleos, quando antes
>> funcionavam 6). Ativando o corre unlocker na bios, notei que "5 cores are
>> actived" (ou seja, o sexto núcleo está desligado).
>> A minha suspeita é que o processador ou a placa-mãe (ou ambos) estejam
>> danificados, porém, eu gostaria de ouvir a opinião dos caríssimos para
>> saber:
> Esse lance do processador pode estar influenciando mas o que me intriga 
> é: por que sempre às quartas de manhã? rsrsrs
> 
>> 1) Há algum software que me permita checar o funcionamento correto da
>> placa-mãe e do processador? Eu tenho usado o mbmon para monitar as
>> temperaturas e tensões do processador e placa-mãe, e parece estar tudo
>> normal.
> Ummm para teste de CPU não sei não. Acho que só usando algo para 
> estressar eles.
> 


Se o problema é stressar alguém está falando com quem entende.

Este é um programinha que fiz para encontrar números primos mas cujo
verdadeiro motivo de existir é exemplificar a programação com múltiplos
processos. Você informa uma faixa de valores e ele encontra os números
primos naquela faixa utilizando o número de processos que você informar.
Você pode usar isso para stressar as suas CPUs.

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include "primo.h"

int main(int argc, char **argv){
	u_int32_t	limite_superior;
	u_int32_t	i, j;
	u_int32_t	processos;
	u_int32_t	intervalo;
	u_int32_t	passo;
	int status;

	if(argc != 3){
		fprintf(stderr,"Este programa encontra todos os numero primos em um
intervalo.\nVoce deve usar %s limite_superior numero_processos\n", argv[0]);
		exit(1);
	}
	
	processos = (u_int32_t)strtol(argv[2], (char **)NULL, 10);
	limite_superior = (u_int32_t)strtol(argv[1], (char **)NULL, 10);
	
	intervalo = limite_superior/processos;
	
	passo = 2 * processos;
	
	if(limite_superior >= 1){
		fprintf(stdout,"%d eh primo\n", 1);
		fflush(stdout);
	}
	if(limite_superior >= 2){
		fprintf(stdout,"%d eh primo\n", 2);
		fflush(stdout);
	}
	
	//Vamos criar os processos reponsáveis por encontrar os números
	for(i=0; i<processos; i++){
		//Vamos fazer o fork do processo
		if(!fork()){
			//Processo filho entra aqui				
			for(j=3+2*i; j<=limite_superior; j+=passo){
				if(eh_primo(j)){
					fprintf(stdout,"%d eh primo\n", j);
				}
			}
			exit(0);
		}
	}
	
	for(i = 1; i<=processos; i++){
		wait(&status);
	}
	return 0;
}




Mais detalhes sobre a lista de discussão freebsd