I am testing the scalability of the TX2. I run one transcoding session using the following command:
nvidia@tegra-ubuntu:~/scripts/works/trans$ sh -x ./h264.sh
- CLIENT_IP=239.255.0.1
- gst-launch-1.0 filesrc location=/home/nvidia/HD_MP2_06011_TS_ASYN_V1_001.mpeg ! tsdemux name=demux demux. ! mpegvideoparse ! omxmpeg2videodec ! nvvidconv ! video/x-raw(memory:NVMM), format=(string)I420 ! omxh264enc control-rate=2 bitrate=5000000 ! video/x-h264, stream-format=(string)byte-stream ! h264parse ! rtph264pay mtu=1400 ! udpsink host=239.255.0.1 port=5000 sync=false async=false
Setting pipeline to PAUSED …
Inside NvxLiteH264DecoderLowLatencyInitNvxLiteH264DecoderLowLatencyInit set DPB and MjstreamingInside NvxLiteH265DecoderLowLatencyInitNvxLiteH265DecoderLowLatencyInit set DPB and MjstreamingPipeline is PREROLLED …
Setting pipeline to PLAYING …
New clock: GstSystemClock
NvMMLiteOpen : Block : BlockType = 267
TVMR: NvMMLiteTVMRDecBlockOpen: 7818: NvMMLiteBlockOpen
NvMMLiteBlockCreate : Block : BlockType = 267
TVMR: cbBeginSequence: 1190: BeginSequence 1280x720, bVPR = 0
TVMR: LowCorner Frequency = 100000
TVMR: cbBeginSequence: 1583: DecodeBuffers = 3, pnvsi->eCodec = 1, codec = 5
TVMR: cbBeginSequence: 1654: Display Resolution : (1280x720)
TVMR: cbBeginSequence: 1655: Display Aspect Ratio : (1280x720)
TVMR: cbBeginSequence: 1697: ColorFormat : 5
TVMR: cbBeginSequence:1711 ColorSpace = NvColorSpace_YCbCr601
TVMR: cbBeginSequence: 1839: SurfaceLayout = 3
TVMR: cbBeginSequence: 1936: NumOfSurfaces = 7, InteraceStream = 0, InterlaceEnabled = 0, bSecure = 0, MVC = 0 Semiplanar = 1, bReinit = 1, BitDepthForSurface = 8 LumaBitDepth = 8, ChromaBitDepth = 8, ChromaFormat = 5
TVMR: cbBeginSequence: 1938: BeginSequence ColorPrimaries = 2, TransferCharacteristics = 2, MatrixCoefficients = 2
Allocating new output: 1280x720 (x 7), ThumbnailMode = 0
Framerate set to : 60 at NvxVideoEncoderSetParameterNvMMLiteOpen : Block : BlockType = 4
===== MSENC =====
NvMMLiteBlockCreate : Block : BlockType = 4
===== MSENC blits (mode: 1) into tiled surfaces =====
TVMR: FrameRate = 60
TVMR: NVDEC LowCorner Freq = (200000 * 1024)
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: FrameRate = 60.000240
TVMR: NvMMLiteTVMRDecDoWork: 6665: NVMMLITE_TVMR: EOS detected
TVMR: TVMRBufferProcessing: 5641: Processing of EOS
TVMR: TVMRBufferProcessing: 5716: Processing of EOS Done
Got EOS from element “pipeline0”.
Execution ended after 0:00:19.526421381
Setting pipeline to PAUSED …
Setting pipeline to READY …
TVMR: TVMRFrameStatusReporting: 6266: Closing TVMR Frame Status Thread -------------
TVMR: TVMRVPRFloorSizeSettingThread: 6084: Closing TVMRVPRFloorSizeSettingThread -------------
TVMR: TVMRFrameDelivery: 6116: Closing TVMR Frame Delivery Thread -------------
TVMR: NvMMLiteTVMRDecBlockClose: 8018: Done
Setting pipeline to NULL …
Freeing pipeline …
The top command returns:
top - 19:08:30 up 14 min, 4 users, load average: 0.51, 0.25, 0.15
Tasks: 273 total, 1 running, 272 sleeping, 0 stopped, 0 zombie
%Cpu(s): 14.0 us, 2.4 sy, 0.0 ni, 83.3 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
KiB Mem : 8042556 total, 5475960 free, 1736572 used, 830024 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 6152468 avail Mem
So one transcode from mpeg2 to h264 (decode mpeg2 in hardware, encode h264 in hardware) takes about 16% of the CPU. Does this look correct? In the TX2 datasheet it claims 14x 1080p30. I was doing 60 FPS, but still I would expect 5 to 6% CPU utilization to do 14x1080p30.
Thx,
K-