Hi!
> From: Alexei Dets <[EMAIL PROTECTED]>
> I've decided to investigate a bit a dependence of mpeg2enc encoding speed from
> the value of its -M (--multithread) encoding option & the type of the kernel
> (UP/SMP) the system runs on the Pentium 4 with hyperthreading support.
> For the tests with UP kernel hyperthreading was disabled in BIOS, for SMP -
> enabled.
The "HT" isn't a full/complete cpu (dual core cpus are in the process
of being developed by Intel (and others)). So enabling/disabling
Hype(r)Threading (it's mostly "hype" by Intel) is not the same
as actually having a 2nd cpu.
But of course you knew that already :-)
> Testing platform:
> System: Pentium-4 2,4Gz with hyperthreading support, i865PE, 256M RAM
> (single-channel mode)
> OS: Linux, Fedora Core 1, kernel-2.4.22-1.2194.nptl (and its SMP version)
> Software version: mjpegtools-1.6.2
Ah, but no 2nd cpu. That's where SMP will actually take effect - the
partial cpu that Intel put in isn't really a good test of SMP
efficiency - for that a full 2nd cpu is needed.
> Testing command:
> time cat stream.yuv | yuvscaler -n n -O SVCD 2> /dev/null | mpeg2enc -f 4 -F 1
> Results:
> 1. Hyperthreading disabled, UP kernel:
> -M 0 1m42.133s
> -M 1 1m41.043s *
> -M 2 1m44.355s
> -M 3 1m46.544s
> -M 4 1m43.633s ???
> -M 5 1m51.273s
Those look to be Insignificant variations. As expected.
> 2. Hyperthreading enabled, SMP kernel:
> -M 0 1m53.083s
> -M 1 1m47.157s
> -M 2 1m37.317s
> -M 3 1m31.565s
> -M 4 1m31.379s *
> -M 5 1m31.832s
> So, the results show that encoding with hyperthreading enabled is about 10%
> faster and the optimal thread number for uniprocessor P4 system without
I've very suprised to see those results! When I enabled HT the
entire system slowed down and encoding ran about 15-20% *SLOWER*. That
was on a real dual P4/Xeon. With HT enabled the system showed
4 "cpus" (of which only 2 were the real/heavy ones and 2 were the
partial/lightweight ones). The kernel treated all 4 pretty much
the same and scheduled processes accordingly - and that is something
which causes an overall slowdown because the extra "cpus" weren't
executing threads from the same process (which is where any benefits
of HT come from).
>BTW, also the results showed that on a such system it is possible to encode to
>SVCD resolution in real time, even faster - the video fragment is ~ 2min. :-)
As long as no filtering is needed...
Place a yuvdenoise, yuvmedianfilter, or y4mdenoise in the pipeline and
see what happens :-)
That's where a real 2nd cpu comes in handy - I keep both cpus busy
by using a 6 or 7 stage pipeline prior to the encoder. The speed of
the encoder actually doesn't matter since the preceeding stages are
the limiting factors.
> I also tried the -R 2 switch (since the default -R 0 is known to produce
> artifacts sometimes & --no-dualprime-mpeg2 switch is not available in 1.6.2
Oh, you're not running the CVS version. That's where changes/fixes
would be made if bottlenecks/bugs are found and fixed as a result of
testing/profiling/etc...
One thing I should mention here in case the notice in the -developer
list was missed: The default in the CVS version is now to NOT
use DPME (DualPrimeMotionEstimation) - if you want DP then the
option is now --dualprime-mpeg2.
> Encoding without hyperthreading is ~7% faster in this case - "-R 2" perfomance
> hit is terrible for the system with hyperthreading (or to any SMP system?) -
You do know that 1) B frames are computationally expensive and 2)
there's been a buglet in mpeg2enc for quite a while that accidentally
serializes the processing in a way that renders -M mostly meaningless
when B frames are used.
> nearly half ot the perfomance is lost :-( BTW, the resulting file is also a
> bit bigger :-(
I've noticed that too - there are few cases I have seen where using
B frames reduces the bitrate. Even with clean sources (D8 or DV
camcorder) not using B frames seems to give a lower bitrate. The
size difference between B and P frames with mpeg2enc is often fairly
small - and at that point skipping the B frames gives a smaller file
(lower bitrate). On the other hand I have seen commercial encodings
where the size difference between the B and P frames is substantial
(the B frames are _much_ smaller) - in that case using B frames is
a Good Thing.
Cheers,
Steven Schultz
-------------------------------------------------------
This SF.Net email sponsored by Black Hat Briefings & Training.
Attend Black Hat Briefings & Training, Las Vegas July 24-29 -
digital self defense, top technical experts, no vendor pitches,
unmatched networking opportunities. Visit www.blackhat.com
_______________________________________________
Mjpeg-users mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/mjpeg-users