1 |
Então, rodar um benchzinho como aquela função que eu escrevi deve mostrar |
2 |
exatamente isso, o servidor é focado em throughtput, e desktop em |
3 |
velocidade. Para 2 arquivos, o core 2 deve ganhar, para mais, o octa core |
4 |
deve ganhar. |
5 |
|
6 |
Mas agora eu fiquei curioso pra ver tua saida, hehe. Pra facilitar sua vida |
7 |
e minha curiosidade, suponhamos que vc só tenha fácil aí um arquivo para |
8 |
recodificado, você pode fazê-lo 8 vezes ao mesmo tempo para 8 arquivos de |
9 |
saída diferente. Melhor ainda, só colar os comandos abaixo pra você |
10 |
executar o teste para 2, 6 e 8 lames em paralelo, só setar a variável |
11 |
entrada para o nome do mp3 a ser recodificado =): |
12 |
|
13 |
|
14 |
[01:23:03] (0) fabiano@destilador:/fd/mp3/tmp |
15 |
$ export entrada=entrada.mp3 |
16 |
|
17 |
[01:23:14] (0) fabiano@destilador:/fd/mp3/tmp |
18 |
$ function multi_lame() { while (( $# > 0 )) ; do in=$1 ; shift ; out=$1 ; |
19 |
shift ; echo "Rodando lame: $in --> $out" ; lame -S $in $out & done ; time |
20 |
wait ; } |
21 |
|
22 |
[01:23:21] (0) fabiano@destilador:/fd/mp3/tmp |
23 |
$ multi_lame $( echo "$entrada saida"{1..2}.mp3 ) |
24 |
|
25 |
Rodando lame: entrada.mp3 --> saida1.mp3 |
26 |
[1] 13822 |
27 |
Rodando lame: entrada.mp3 --> saida2.mp3 |
28 |
[2] 13823 |
29 |
[1]- Done lame -S $in $out |
30 |
[2]+ Done lame -S $in $out |
31 |
|
32 |
real 0m14.336s |
33 |
user 0m27.939s |
34 |
sys 0m0.063s |
35 |
|
36 |
[01:23:39] (0) fabiano@destilador:/fd/mp3/tmp |
37 |
$ multi_lame $( echo "$entrada saida"{1..6}.mp3 ) |
38 |
|
39 |
[01:24:41] (0) fabiano@destilador:/fd/mp3/tmp |
40 |
$ multi_lame $( echo "$entrada saida"{1..8}.mp3 ) |
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
2008/11/14 Eduardo Schoedler <eschoedler@×××××××××××.br> |
47 |
|
48 |
> Grande Fabiano! |
49 |
> |
50 |
> Cara, nem é para tanto... rsrsrs. |
51 |
> Na verdade esse octa-core é um server Dell R900, onde roda todo o sistema |
52 |
> da intranet do grupo. |
53 |
> Uma das tarefas dele é gerar um mp3 de saída de um tratamento de uma |
54 |
> entrada, seja wave/mp3. |
55 |
> |
56 |
> Me perguntaram porque uma máquina de R$ 30k leva mais tempo para |
57 |
> recompactar um mp3 do que um Core2-Duo pé-de-boi (comprado na loja da |
58 |
> esquina)... e fiquei meio sem saber oq dizer... rsrsrs. |
59 |
> |
60 |
> Vendo os testes, descobrimos o motivo em conjunto. |
61 |
> O lame não é multi-thread, e também cada core do octa tem o clock menor do |
62 |
> que cada core do core2... por isso a diferença. |
63 |
> |
64 |
> Abraços à todos !!! |
65 |
> |
66 |
> Eduardo. |
67 |
> |
68 |
> |
69 |
> *From:* Fabiano - deStilaDo <fabianoengler@×××××.com> |
70 |
> *Sent:* Thursday, November 13, 2008 11:58 PM |
71 |
> *To:* gentoo-user-br@l.g.o |
72 |
> *Subject:* Re: [gentoo-user-br] Instalando o Lame |
73 |
> |
74 |
> Se você faz questão de mostrar o octa-core dando um pau, vc pode fazer um |
75 |
> scriptizinho pra rodar 8 lames em paralelo, aih vc ganhar em throughtput |
76 |
> pelo menos, maior numero de arquivos (ou segundos de musica) convertidos por |
77 |
> unidade de tempo =) |
78 |
> |
79 |
> O problema é o fazer o script, hehehehe =P |
80 |
> |
81 |
> Mas não deve ser nada de outro mundo também, me parece um exercício |
82 |
> interessante pra uma hora sem nada pra fazer, talvez dê pra implementar com |
83 |
> trap/wait, ou algo assim. Em C é bem fácil fazer com fork(), wait() e |
84 |
> execve(). |
85 |
> |
86 |
> Ou ainda, se vc não quiser brincar, só pra fazer um testezinho rápido, eu |
87 |
> fiz uma função em bash que aceita vários arquivos como parametro e roda o |
88 |
> lame para todos eles ao mesmo tempo e mostra o tempo total no final. Você |
89 |
> pode rodar essa função pra 8 arquivos por exemplo e deixar que o escalonador |
90 |
> do kernel cuide do paralelismo pra voce e ver os 8 cores em 100% =) |
91 |
> |
92 |
> |
93 |
> A sintaxe é bem simples, pares de arquivos de entrada e saida, |
94 |
> respectivamente: |
95 |
> multi_lame entrada1 saida1 entrada2 saida2 entrada3 saida3 ...etc. |
96 |
> |
97 |
> Por exemplo eu rodando para 3 arquivos no meu amd X2: |
98 |
> |
99 |
> [00:53:50] (0) fabiano@destilador:/fd/mp3/tmp |
100 |
> $ function multi_lame() { while (( $# > 0 )) ; do in=$1 ; shift ; out=$1 ; |
101 |
> shift ; echo "Rodando lame: $in --> $out" ; lame -S $in $out & done ; time |
102 |
> wait ; } |
103 |
> |
104 |
> [00:54:02] (0) fabiano@destilador:/fd/mp3/tmp |
105 |
> $ multi_lame arq1.wav arq1.mp3 arq2.wav arq2.mp3 arq3.wav arq3.mp3 |
106 |
> Rodando lame: arq1.wav --> arq1.mp3 |
107 |
> [1] 13268 |
108 |
> Rodando lame: arq2.wav --> arq2.mp3 |
109 |
> [2] 13269 |
110 |
> Rodando lame: arq3.wav --> arq3.mp3 |
111 |
> [3] 13270 |
112 |
> [1] Done lame -S $in $out |
113 |
> [2]- Done lame -S $in $out |
114 |
> [3]+ Done lame -S $in $out |
115 |
> |
116 |
> real 0m6.261s |
117 |
> user 0m10.183s |
118 |
> sys 0m0.083s |
119 |
> |
120 |
> |
121 |
> Cola tua saída pra 8 arquivos aê =PPP |
122 |
> |
123 |
> 2008/11/13 Eduardo Schoedler <eschoedler@×××××××××××.br> |
124 |
> |
125 |
>> Já adianto que o bladeenc não converte de mp3 para mp3 ... e tb não é |
126 |
>> multi-thread. |
127 |
>> Eu até poderia gerar um passo a mais, exportando o mp3 para wave com o |
128 |
>> mpg321... mas aí para compactar não achei nenhum que seja multi-thread. |
129 |
>> |
130 |
>> Abraços! |
131 |
>> Eduardo. |
132 |
>> |
133 |
>> |
134 |
>> *From:* Eduardo Schoedler <eschoedler@×××××××××××.br> |
135 |
>> *Sent:* Thursday, November 13, 2008 5:47 PM |
136 |
>> *To:* gentoo-user-br@l.g.o |
137 |
>> *Subject:* Re: [gentoo-user-br] Instalando o Lame |
138 |
>> |
139 |
>> Olá Fabiano e Diogo! |
140 |
>> |
141 |
>> O htop quase me enganou... ele mostrou o lame consumindo 100%, mas ao |
142 |
>> constatar pelo dstat, ele mostrou idle de 50% da máquina durante o processo. |
143 |
>> Vejam: |
144 |
>> |
145 |
>> # dstat -c -C 0,1,total -M topcpu |
146 |
>> -cpu0-usage---cpu1-usage---total-cpu----most-expensive- |
147 |
>> *usr* sys idl :usr sys *idl* :usr sys idl | cpu process |
148 |
>> *100* 0 0 : 1 0 *99* : 51 0 50 |lame 100 |
149 |
>> *100* 0 0 : 0 1 *99* : 50 1 50 |lame 100 |
150 |
>> * 99* 1 0 : 0 1 *99* : 50 1 50 |lame 100 |
151 |
>> *100* 0 0 : 1 0 *99* : 51 0 50 |lame 100 |
152 |
>> * 99* 1 0 : 1 0 *99* : 50 1 50 |lame 100 |
153 |
>> *100* 0 0 : 1 0 *99* : 51 0 50 |lame 100 |
154 |
>> |
155 |
>> |
156 |
>> Logo, ele não faz multi-thread nenhum. |
157 |
>> Alguém aí tem outra sugestão para mp3 encoder em linha de comando ? |
158 |
>> Tenho um octa-core que não pode perder de um core2 duo... rsrsrs. |
159 |
>> |
160 |
>> Abraços! |
161 |
>> |
162 |
>> |
163 |
>> *From:* Fabiano - deStilaDo <fabianoengler@×××××.com> |
164 |
>> *Sent:* Thursday, November 13, 2008 4:38 PM |
165 |
>> *To:* gentoo-user-br@l.g.o |
166 |
>> *Subject:* Re: [gentoo-user-br] Instalando o Lame |
167 |
>> |
168 |
>> Me parece que o lame não eh multi-thread, logo ele só vai usar um core, |
169 |
>> mesmo que vc tenha 20 cpus... |
170 |
>> |
171 |
>> Execute o htop enquanto codifica um mp3 pra você ver, deve ter um core em |
172 |
>> 100% e o resto normal. |
173 |
>> |
174 |
>> |
175 |
>> 2008/11/13 Eduardo Schoedler <eschoedler@×××××××××××.br> |
176 |
>> |
177 |
>>> Galera, tem outra coisa fazendo diferença.... acho que pode ser o clock |
178 |
>>> de cada CPU, apesar de um ser octa-core e outro dual-core. |
179 |
>>> Não sei se realmente o lame faz uso dos octa-cores. |
180 |
>>> |
181 |
>>> Testes no Octa-core (Gentoo rodando amd64, portanto sem MMX). |
182 |
>>> ====================================================== |
183 |
>>> |
184 |
>>> # time lame ... teste.mp3 |
185 |
>>> LAME 3.98.2 64bits (http://www.mp3dev.org/) |
186 |
>>> ... |
187 |
>>> real 0m56.400s |
188 |
>>> user 0m56.370s |
189 |
>>> sys 0m0.030s |
190 |
>>> |
191 |
>>> |
192 |
>>> O pior resultado do Core2 Duo ainda é 11segs melhor que o octa-Xeon. |
193 |
>>> |
194 |
>>> |
195 |
>>> Abraços! |
196 |
>>> Eduardo. |
197 |
>>> |
198 |
>>> |
199 |
>>> |
200 |
>>> *From:* Eduardo Schoedler <eschoedler@×××××××××××.br> |
201 |
>>> *Sent:* Thursday, November 13, 2008 5:25 PM |
202 |
>>> *To:* gentoo-user-br@l.g.o |
203 |
>>> *Subject:* Re: [gentoo-user-br] Instalando o Lame |
204 |
>>> |
205 |
>>> Alguns testes no Core 2 Duo: |
206 |
>>> |
207 |
>>> Com MMX ativo (e nasm instalado): |
208 |
>>> ============================= |
209 |
>>> |
210 |
>>> # time lame ... teste.mp3 |
211 |
>>> LAME 3.98.2 32bits (http://www.mp3dev.org/) |
212 |
>>> CPU features: MMX (ASM used), SSE (ASM used), SSE2 |
213 |
>>> ... |
214 |
>>> real 0m41.770s |
215 |
>>> user 0m41.660s |
216 |
>>> sys 0m0.040s |
217 |
>>> |
218 |
>>> |
219 |
>>> Com MMX desativo (não adiantou só recompilar o Lame, tive de |
220 |
>>> desinstalar o nasm): |
221 |
>>> ===================================================================== |
222 |
>>> |
223 |
>>> # time lame ... teste.mp3 |
224 |
>>> LAME 3.98.2 32bits (http://www.mp3dev.org/) |
225 |
>>> ... |
226 |
>>> real 0m45.143s |
227 |
>>> user 0m45.010s |
228 |
>>> sys 0m0.060s |
229 |
>>> |
230 |
>>> |
231 |
>>> Já são 4s de diferença. |
232 |
>>> |
233 |
>>> |
234 |
>>> Abraços! |
235 |
>>> |
236 |
>>> |
237 |
>>> *From:* Fabiano - deStilaDo <fabianoengler@×××××.com> |
238 |
>>> *Sent:* Thursday, November 13, 2008 4:15 PM |
239 |
>>> *To:* gentoo-user-br@l.g.o |
240 |
>>> *Subject:* Re: [gentoo-user-br] Instalando o Lame |
241 |
>>> |
242 |
>>> teste sem o mmx no core 2 =) |
243 |
>>> |
244 |
>>> algo assim deve funcionar: |
245 |
>>> $ time lame xxxxxx (tempo com mmx) |
246 |
>>> $ quickpkg lame |
247 |
>>> $ USE=-mmx emerge lame -1va |
248 |
>>> $ time lame yyyyyy (tempo sem mmx) |
249 |
>>> $ emerge lame -1Kva # restaurar o lame com mmx =) |
250 |
>>> |
251 |
>>> |
252 |
>>> |
253 |
>>> 2008/11/13 Eduardo Schoedler <eschoedler@×××××××××××.br> |
254 |
>>> |
255 |
>>>> |
256 |
>>>> "Thiago Nunes" escreveu: |
257 |
>>>> |
258 |
>>>> |
259 |
>>>> 2008/11/13 Eduardo Schoedler <eschoedler@×××××××××××.br>: |
260 |
>>>>> |
261 |
>>>>> Estou tentando instalar o Lame em um Gentoo rodando em amd64. |
262 |
>>>>>> Porém está acontecendo um negócio estranho. |
263 |
>>>>>> Note que ele não está utilizando o USE de mmx, embora eu esteja |
264 |
>>>>>> forçando. |
265 |
>>>>>> |
266 |
>>>>> |
267 |
>>>>> |
268 |
>>>>>> Alguém tem uma dica para mim conseguir compilar o Lame com o USE mmx ? |
269 |
>>>>>> |
270 |
>>>>> |
271 |
>>>>> Eu não tenho uma dica, mas se servir de consolo eu te mostro algo que |
272 |
>>>>> vai justificar a falta. |
273 |
>>>>> |
274 |
>>>>> Em "/usr/portage/profiles/arch/amd64/package.use.mask" eu encontrei o |
275 |
>>>>> seguinte: |
276 |
>>>>> --- |
277 |
>>>>> # 8 Aug 2008: Alexis Ballier <aballier@g.o> |
278 |
>>>>> # x86 asm only, it won't be built on amd64 if mmx useflag is enabled |
279 |
>>>>> but that |
280 |
>>>>> # saves people from needlessly installing nasm |
281 |
>>>>> # Refs bug #93279 |
282 |
>>>>> media-sound/lame mmx |
283 |
>>>>> --- |
284 |
>>>>> |
285 |
>>>>> Isso é porque a use mmx ativada traz o nasm como dependência, que é um |
286 |
>>>>> compilador de assembly, mas só para assembly x86 (:-). |
287 |
>>>>> |
288 |
>>>>> []s |
289 |
>>>>> |
290 |
>>>> |
291 |
>>>> Hummmm... realmente, depois que eu mandei o e-mail resolvi atualizá-lo |
292 |
>>>> em um gento x86 que tenho aqui. |
293 |
>>>> Ele instalou o nasm como dependência. |
294 |
>>>> |
295 |
>>>> É incrível, mas esse servidor (octa-Xeon E7310 de 1,6GHz com 16GB RAM) |
296 |
>>>> tá perdendo FEIO (aprox 10 ~15segs) para compactar um mp3 contra um |
297 |
>>>> Core2-duo E4500 @ 2.20GHz. |
298 |
>>>> |
299 |
>>>> Acredito que o flag mmx pode estar fazendo alguma diferença... mas não |
300 |
>>>> sei se é tanto assim. |
301 |
>>>> |
302 |
>>>> Abraços! |
303 |
>>>> Eduardo. |
304 |
>>>> |
305 |
>>> |
306 |
>>> -- |
307 |
>>> Fabiano. |
308 |
>>> |
309 |
>>> |
310 |
>> |
311 |
>> |
312 |
>> -- |
313 |
>> Fabiano. |
314 |
>> |
315 |
>> |
316 |
> |
317 |
> |
318 |
> -- |
319 |
> Fabiano. |
320 |
> |
321 |
> |
322 |
|
323 |
|
324 |
-- |
325 |
Fabiano. |