commit | 85d0455227ea6bb60f5dc1cf6e67d6e27eed7788 | [log] [tgz] |
---|---|---|
author | Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com> | Thu May 09 16:26:53 2019 -0700 |
committer | Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com> | Thu Sep 12 18:13:50 2019 +0000 |
tree | 18464de6d930c25da86e3340afa458cd85519121 | |
parent | 513d95ef53569b2345e1e12337bade61f0cca2aa [diff] |
Add flow control to prevent buffer over run This service uses direct frame update with bypassing image compression and invalidating logic in libvncserver to achieve better performance by using of H/W compressed JPEG frames as those come from the video engine driver. This behavior helps quick frame update using very small amount of CPU resources but it causes a side effect which crashes bmcweb by OOM killer due to a buffer over run issue. Usually, this issue happens often in a slow speed connection because this service keeps sending all frames without any handshaking with clients so a session buffer in the bmcweb gets bigger and bigger since the low speed connection can't send all stream data on time. To fix this issue, this commit adds flow control logic to make frame updating handshakes with client so that it'll send frames only when it recieved client frame update messages. All other frames when the client doesn't request will be dropped out to prevent the buffer over run issue. Tested: bmcweb didn't keep increasing its KVM session buffer. KVM worked well with showing good refresh speed. resolves https://github.com/openbmc/bmcweb/issues/80 Change-Id: I6b09a711137d15a38fce59adada9bf3d00afde86 Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
The obmc-ikvm application is a VNC server that provides access to the host graphics output. The application interfaces with the video device on the BMC that captures the host graphics, and then serves that video data on the RFB (remote framebuffer, also known as VNC) protocol. The application also interfaces with the BMC USB gadget device to pass HID events from the BMC to the host, allowing the user to interact with the host system.
Once the host is running and an appropriate HID gadget device is instantiated on the BMC, the application can be started with the following command: obmc-ikvm -v <video device path> -i <HID gadget device path>
For example:
obmc-ikvm -v /dev/video0 -i /dev/hidg0