Point Grey Research Knowledge Base

Article 356 - Low virtual memory may prevent Linux-based 1394 imaging applications from starting.

Issue:
Low virtual memory may prevent Linux-based 1394 imaging applications from starting.

Cause:

Low virtual memory may prevent Linux-based 1394 imaging applications from starting. The error received may be one or all of the following:

Error starting isochronous stream.
Failed isochronous intitialization.

This issue has been observed in applications that use the video1394 driver for Linux, which is accessed by imaging libraries such as libdc1394. It may be especially common on video systems that transmit large-format images from 2 MP or 5 MP color cameras such as Grasshoper GRAS-20S4C/50S5C, Flea2 FL2-20S4/FL2G-50S5 and Ladybug3. 

To verify if low virtual memory may be the source of these errors, view the Linux general message log (/var/log/messages) or kernel ring buffer log (/var/log/dmesg) while running the FlyCap2.exe demo program included with the FlyCapture 2.0 SDK. Both logs will show entries similar to the following:

vmap allocation for size 57634816 failed: use vmalloc= to increase size.

Solution:

To fix, take one of the following measures:

  • In your application, manually reduce the number of requested image buffers to lower than the default value of 10. Using the FlyCapture 2.0 interface, set the numBuffers member of the FC2Config struct. Then, call the SetConfiguration member function of the Camera object.

  • Increase the amount of virtual memory available to the system. To determine the current amount, issue the following command:

    cat /proc/meminfo

    The relevant parts of the output are:

    VmallocTotal—Total available virtual memory
    VmallocUsed—Amount used
    VmallocChunk—Largest contiguous piece

    To increase VmallocTotal, use GRUB to add the vmalloc command to the Linux kernel boot line. For a persisted change in virtual memory, use the GRUB configuration editor. Alternatively, use the GRUB selection menu each time at system boot up. For example, to increase virtual memory to 256 MB, specify:

    vmalloc=256M
  • Transmit images in Raw8 pixel format, and perform color processing in your application.

  • Run your application on a newer installation of Linux that uses the Juju FireWire kernel driver stack. We have not observed the same virtual memory issues using this driver stack. Juju is compatible with libdc1394 v2, and allows buffer sizes greater than 64 MB. For more information, see https://ieee1394.wiki.kernel.org/index.php/Juju_Migration

Related Articles:
1.) Buffer size limitation in video1394 driver for Linux may prevent applications from starting.
2.) Getting Started with FlyCapture 2.0 and Linux
3.) Using Point Grey Imaging Products under Linux.
4.) Transitioning to FlyCapture 2.0

Related Links:
1.)  https://ieee1394.wiki.kernel.org/index.php/FAQ#What_is_the_video1394_driver.2Fmodule_for.3F


Article ID:
356
Published:
11/17/2010 10:46:38 AM
Last Modified:
11/17/2010 10:53:32 AM
Keywords:
virtual memory, Linux, video1394

Copyright © 2004 Point Grey Research Inc.