It’s hard to believe that, just a few years ago, most government employees could only access email from their primary desktop computers. Even those with the ability to access their enterprise e-mail accounts from other devices could only view new messages; archives were stored locally on their desktops. Now it is possible to check email from multiple locations and on multiple devices – 24 hours of the day.
Email was really just the beginning. We’ve arrived at a new technology-consumption landscape – powered by cloud, mobile and even social media – that is fundamentally changing the way we use and purchase information technology tools.
As we gear up for the Internet of Things World Forum in October, it seems like a good time to start a discussion with the broader IoT community. The goal of this series is to have a focused weekly discussion on a topic relevant to Internet of Things. Since the theme of the IoT World Forum is “IoT is Here, IoT is Now” we’re using that as an initial theme for the chat series for the next few months.
The Tweet Chat will be run by @Cisco_IoT with the hashtag #IoTChat (creative, right?) the goal is to make this a community discussion (i.e. not Cisco-focused). We’ll have 6-10 questions (time permitting) and request that people answer Q(number) with A(number). Read More »
Big Data, Video, and the Internet of Everything (IoE) are driving high demand for data storage in today’s IT environments. Today, Cisco announced new additions to the MDS storage area networking (SAN) portfolio, broadening innovation to meet the needs of small SANs and cloud environments.
How much of a demand for storage are we talking about? A lot. According to IDC’s recently released “Digital Universe of Opportunities: Rich Data and Increasing Value of Internet of Things,” by 2020 data produced will grow by 10 times, from 4.4ZB today to 44ZB (yes, that’s Zetabytes, with a Z); 32 billion Internet of Things devices will be connected to the Internet; 40% of data will be touched by cloud; and enterprises will have liability and responsibility for 85% of all data.
The video4linux subsystem of the kernel which deals with video capture, video output and hardware video codecs has a very large API with many ioctls, settings, options and capabilities. And most hardware will only use a fraction of that. This makes it hard to test whether your driver implements everything it should and it makes it hard to test if your application supports all hardware variants.
Providing tools that allow you gain confidence about the quality of the code you are writing, whether it is a driver or an application, would be very helpful indeed. As co-maintainer of the subsystem and as part of my job trying to convince the industry to switch to the V4L2 API instead of (Oh no! Not again!) rolling your own API I thought this was a worthy cause to spend time on.
I started writing a utility called v4l2-compliance to test drivers over 6 years ago, but for a long time it only tested a fraction of the V4L2 API. The test coverage slowly increased over the years but it wasn’t until February this year that it became a really powerful tool when support for testing video streaming was added. Today it has test coverage of around 90% of the API and new V4L2 drivers must pass the v4l2-compliance tests before they are allowed in the kernel.
One important missing piece in the compliance utility is testing for the various cropping, composing and scaling combinations. The main reason being that it wasn’t always clear in the API what the interaction should be between the various actions. E.g. changing a crop rectangle might require a change to the compose rectangle as well. So should that be allowed or should an error be returned instead? (Answer: yes, that’s allowed). I hope to add support for testing this some time this year.
It would be nice if this could be easily tested with an application and a driver that supports all the various combinations. But no such driver exists, and that brings me to the second part of this post: how do you test an application against the bewildering array of hardware? All too often application developers only test their application against the hardware they own, and so it is likely it will fail miserably when using it with hardware that implements a different subset of the V4L2 API.
The answer to this question is that a virtual V4L2 driver is needed that implements as much of the V4L2 API as is possible and that can be configured in various ways to accurately model real hardware. Today there is a virtual video driver in the kernel called vivi, but unfortunately that driver doesn’t act at all as real hardware does. And it only supports simple video capture which is just a small subset of the whole API.
In order to resolve this situation I wrote a new driver called vivid: Virtual Test Driver. This driver covers most of the V4L2 API and is ideal for testing your application. Writing this driver was very useful since it forced me to think about some of the dark and dusty corners of the V4L2 API, and some of those corners needed a big broom to clean up. I found a variety of bugs in the V4L2 core and the API documentation just because this driver exercised parts of the API that are rarely if ever used.
I also realized that a driver like this is ideal to emulate hardware that is not yet available and can be used to prototype your upcoming product in the absence of the actual hardware. It’s a logical consequence of the requirement that in order for the virtual video driver to be really useful it has to accurately model hardware.
It also had an immediate beneficial effect on the two ‘golden reference’ utilities that control V4L2 drivers: the command line v4l2-ctl utility and the GUI equivalent qv4l2. After all, in order to test whether the vivid driver works you need applications to test the driver. As a result both utilities improved as more features were added to the driver, which all needed to be tested by those applications. So the driver has already fulfilled its promised to help test and improve applications.
In this week’s episode of Engineers Unplugged, Uri Elzur (Intel) and Mike Dvorkin (@dvorkinista) discuss automation in the data center, from application intent to compliance and governance. What is shared infrastructure? Listen in!
Data Center Automation Knowledge Drop with Uri Elzur and Mike Dvorkin.
If you would like to become Internet Famous, and strut your unicorn talents, join us for our next filming session at VMworld 2014. Tweet me for details!
This is Engineers Unplugged, where technologists talk to each other the way they know best, with a whiteboard. The rules are simple:
Episodes will publish weekly (or as close to it as we can manage)