# [Optimizacion] PequeÑa duda sobre un Core 2 Duo (RESUELTO)

## ricardooctavio

Hola, muy buenas tardes a todos!

Antes de comenzar quisiera queme informaran porfavor,  si es correcto iniciar este hilo aqui, o si ya hay algo parecido en alguna parte que me pueda servir, se los agradeceria.  :Embarassed: 

Pues mi duda es basicamente respecto a los parametros de optimizacion para el gcc, CFLAGS y algunos otros parametros de portage como MAKEOPTS, FEATURES y otros.

UPDATE; Olvide decir que mis dudas ban sobre un sistema con CHOST="x86_64-pc-linux-gnu"

===>

Mi primera cuestion es, tengo una Macbook con procesador Intel Core2 Duo, entonces me surge una inquietud sobre con que FLAGS obtendria una mejor optimizacion del sistema en general, no importa cuan minuscula sea la diferencia;

```
Propuesta 1:

CFLAGS="-march=core2 -O2 -pipe"

Propuesta 2:

CFLAGS="-march=core2 -msse4.1 -O2 -pipe"

Propuesta 3:

CFLAGS="-march=native -mtune=native -O2 -pipe"
```

Podrian orientarme que diferencia tendria mi sistema con -march=native o con -march=core2, las flags entre si son cosas muy diferentes ? que me recomiendan ?.

==>

Otra cuastion que tengo es con la variable MAKEOPTS, especificamente con la bandera -l, se que es una mejora de seguridad para portage, pero no me queda muy claro que efecto tenfria cuando portage instala paquetes; Seria conveniente usarla asi en un core 2 Duo; podrian orientarme?;

```
MAKEOPTS="-j3 -l3"

```

==>

la siguiente cuesion es con las variables EMERGE_DEFAULT_OPTS y PORTAGE_NICENESS, la verdad despues de consulatar un poco que hacen estas variables, me han quedado algunas dudas de si las estoy utilizando bien; esta es la propuesta que tengo en mente para su utilizacion, pueden orientarme en su utilizacion y si son conveneintes para mi sistema core2 Duo

mi propuesta ;

```
#PORTAGE_ELOG_CLASSES="log warn error info"

#PORTAGE_ELOG_SYSTEM="echo:log,warn save:log,warn,error,info syslog:error"

EMERGE_DEFAULT_OPTS="--jobs=3 --load-average=3.0 --with-bdeps y"

PORTAGE_NICENESS="19"
```

estas ultimas variables afectan a FEATURES="-parallel-fetch" o a MAKEOPTS="-j3 -l3"

De verdad estaria muy agradecido si me pudieran orientar un poco acerca de este tema, y disculpen por tanta duda, de antemano muchas gracias a toda la comunidad de los Foros de Gentoo, hasta pronto.  :Razz: Last edited by ricardooctavio on Sat Apr 17, 2010 4:17 pm; edited 4 times in total

----------

## galidor

Hola ricardooctavio y bienvenido.

Hasta donde yo sé, y es bien poco... -march=native permite a gcc seleccionar de forma automática la optimización para la arquitectura de tu procesador basándose en la cpuid lo que muy provablemente dé el mismo resultado que -march=core2

Por otro lado, antes de modificar parámetro dentro de make.conf quizá te convenga mirar los que ya tienes por defecto en make.globals para no tenerlos duplicados.

Poco más te puedo ayudar por hoy.

----------

## pelelademadera

 *Quote:*   

> CFLAGS="-O2 -march=core2 -pipe -fomit-frame-pointer -msse4.1"
> 
> CHOST="x86_64-pc-linux-gnu"
> 
> CXXFLAGS="-O2 -march=core2 -pipe -fomit-frame-pointer -msse4.1"
> ...

 

eso es para un E7*** o un E8*** Q8*** Q9***

para un E1/2/4/5*** o celeron 420/30/40 es:

 *Quote:*   

> CFLAGS="-O2 -march=core2 -pipe -fomit-frame-pointer"
> 
> CHOST="x86_64-pc-linux-gnu"
> 
> CXXFLAGS="-O2 -march=core2 -pipe -fomit-frame-pointer"
> ...

 

el -j3 lo podes incrementar, pero no se si va a mejorar el tiempo de compilacion

----------

## ricardooctavio

 *galidor wrote:*   

> Hola ricardooctavio y bienvenido.
> 
> Hasta donde yo sé, y es bien poco... -march=native permite a gcc seleccionar de forma automática la optimización para la arquitectura de tu procesador basándose en la cpuid lo que muy provablemente dé el mismo resultado que -march=core2
> 
> Por otro lado, antes de modificar parámetro dentro de make.conf quizá te convenga mirar los que ya tienes por defecto en make.globals para no tenerlos duplicados.
> ...

 

a ok, muchas gracias por tu respuesta galidor, ahora veo   :Surprised:  oye he mirado el make.globals como me recomendaste pero de hecho no vienen declarados varios de los parametros que busco y las CFLAGS vienen vacias, la verdad no tengo idea de para que sirva este fichero llamado make.globals, pero me imagino que funciona como el de las make.default, gracias

----------

## ricardooctavio

 *pelelademadera wrote:*   

>  *Quote:*   CFLAGS="-O2 -march=core2 -pipe -fomit-frame-pointer -msse4.1"
> 
> CHOST="x86_64-pc-linux-gnu"
> 
> CXXFLAGS="-O2 -march=core2 -pipe -fomit-frame-pointer -msse4.1"
> ...

 

Muchas gracias por tu ayuda pelelademadera;

Me surge una duda con la recomendacion que das acerca de la bandera -fomit-frame-pointer , esque yo tenia entendido que esta bandera se activava automaticamente con -O2, porfavor corrieme si estoy en un error, de nos ser asi entoces quiere decir que la tengo que declarar explicitamente al make.conf ?

Otra duda que tengo es con las recomendaciones que me diste para un E1/2/4/5*** o celeron 420/30/40, veo que esta recomendacion no incluye la bandera -msse4.1, como la primera recomendacion que pusiste, acaso no tiene que ver con la flag sse4_1 que viene en /proc/cpuinfo de mi core 2 Duo, porque al parecer cuenta con soporte para esa instruccion, una copia de mi cpuinfo

```
macbook desktop # cat /proc/cpuinfo    

processor       : 0                    

vendor_id       : GenuineIntel         

cpu family      : 6                    

model           : 23                   

model name      : Intel(R) Core(TM)2 Duo CPU     T8300  @ 2.40GHz

stepping        : 6                                              

cpu MHz         : 800.000                                        

cache size      : 3072 KB                                        

physical id     : 0                                              

siblings        : 2                                              

core id         : 0                                              

cpu cores       : 2                                              

apicid          : 0                                              

initial apicid  : 0                                              

fpu             : yes                                            

fpu_exception   : yes                                            

cpuid level     : 10                                             

wp              : yes                                            

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1lahf_lm tpr_shadow vnmi flexpriority

bogomips        : 4788.14

clflush size    : 64

cache_alignment : 64

address sizes   : 36 bits physical, 48 bits virtual

power management:

processor       : 1

vendor_id       : GenuineIntel

cpu family      : 6

model           : 23

model name      : Intel(R) Core(TM)2 Duo CPU     T8300  @ 2.40GHz

stepping        : 6

cpu MHz         : 800.000

cache size      : 3072 KB

physical id     : 0

siblings        : 2

core id         : 1

cpu cores       : 2

apicid          : 1

initial apicid  : 1

fpu             : yes

fpu_exception   : yes

cpuid level     : 10

wp              : yes

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 lahf_lm tpr_shadow vnmi flexpriority

bogomips        : 4787.74

clflush size    : 64

cache_alignment : 64

address sizes   : 36 bits physical, 48 bits virtual

power management:
```

Cito Algo que dijiste 

 *Quote:*   

> el -j3 lo podes incrementar, pero no se si va a mejorar el tiempo de compilacion,

  en verdad es seguro incremetar el -j a mas de 3 en mi caso ? 

Pues muchas gracias y disculpa si ago muchas preguntas jajaja   :Laughing:  saludos

----------

## pelelademadera

```
CFLAGS="-O2 -march=core2 -pipe -fomit-frame-pointer -msse4.1" 

CHOST="x86_64-pc-linux-gnu" 

CXXFLAGS="-O2 -march=core2 -pipe -fomit-frame-pointer -msse4.1" 

MAKEOPTS="-j3"
```

ese deberia ser tu make.conf

http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel#Core_2_Duo.2FQuad.2C_Xeon_51xx.2F53xx.2F54xx.2C_Pentium_Dual-Core_T23xx.2B.2FExxxx.2C_Celeron_Dual-Core

por otra parte. yo tengo un E7400. el micro es igual, pero version notebook incluso el mismo cache.

mira, asi anda bien. tengo entendido que -j* se puede subir, pero no bajar. por lo que te recomiendo que pruebes en j3, si te parece que va mal las compilaciones (no usa el 100% del cpu en la parte make del emerge) proba de subir el numero. pero en un dual-core, j3 deberia cargar al 100% los 2 nucleos del cpu

----------

## ricardooctavio

 *pelelademadera wrote:*   

> 
> 
> ```
> CFLAGS="-O2 -march=core2 -pipe -fomit-frame-pointer -msse4.1" 
> 
> ...

 

Hey pelelademadera de nuevo gracias, y al parecer algunas de mis dudas con respecto a las CFLAGS son resuletas por la wiki de cflags, voy a probar la recomendacion que me haces,   :Wink:  saludos.

----------

## the incredible hurd

Añade además a /etc/env.d/99local

```

##### Linker Settings #####

LD_LIBRARY_PATH=/usr/lib

LD_RUN_PATH=/usr/lib

LDEMULATION=elf_x86_64

##### OpenMP #####

OMP_SCHEDULE=dynamic

OMP_DYNAMIC=TRUE

OMP_NUM_THREADS=3

OMP_NESTED=TRUE

```

Dado que supongo que tienes el parámetro (o bandera como la llaman) openmp activada por defecto. De no ser así añádela a make.conf

Después de editar 99local, no olvides ejecutar

```
env-update && source /etc/profile
```

Saludos y bienvenido.

Edito: OMP_NUM_THREADS debe ser el valor de makeopts -jX. Con -j3 en mi core2duo va todo de maravilla. No te recomiendo incrementar el valor porque siempre que compila el sistema sigo haciendo otras cosas, no quiero que abrir cualquier cosa (como openoffice) me lleve demasiado tiempo...

----------

