Frequently Asked Questions<

What does the speedus command do?<

The speedus executable script (or the alias) setups the environment variables LD_LIBRARY_PATH and LD_PRELOAD in order to preload libspeedus.so.

With these new values of the variables, the Speedus library is loaded before executing the application. From now on, when the program tries to perform a system call related to communications, our library will capture it, and replace it with our high performance implementation. In case that the other end doesn't implement Speedus, data transfers will fallback to the standard system communication, ensuring that the data is successfully transmitted.


Will an application running with Speedus be able to communicate with another one which doesn't have Speedus (e.g. across the Internet)?<

Yes. Our solution, besides being totally transparent and non-intrusive, relays on the underlying socket library in case one of the ends of the communication doesn't use our solution, so your application should work perfectly.


How do I know if my application is running with Speedus?<

When you run an application with Speedus, for example:

speedus ./myApplication

If Speedus has been correctly loaded, you should the next messages:

[INFO ] fs_pipedev.c:63      - fs_pipedev_register: PIPEDEV Device (1.1.1_af23f79) Registered
[INFO ] fs_usdev.c:61        - fs_usdev_register: USDEV Device (2.1.0_437b1a1) Registered
[INFO ] fs_wrapper.c:198     - ufs_init_proto: UFS Library (1.4.0_00695f3) Successfully Loaded
# Using Speedus (b20150323)

Does Speedus support UDP?<

Currently we don't support UDP/IP bypass, so your code will only benefit from the latency enhancements of the custom socket polling strategies.


Does Speedus accelerates communications in applications connected over the internet?<

No, it doesn't.


Can I run my application with Speedus and Solarflare OpenOnload simultaneously?<

Yes. If you use the executable script that we provide in the distribution, you can simply run your application like this:

onload --profile=latency speedus ./myApplication

By specifying the onload executable before speedus, your application transparently will be able to accelerate intrahost communications using Speedus and external ones via Solarflare NICs using OpenOnload.


Troubleshooting<

I'm trying to run an application executed inside a script with Speedus, but the library doesn't seem to load / doesn't work properly<

We rely on environment variables such as LD_LIBRARY_PATH and LD_PRELOAD in order for our solution to work transparently. You have to assure that you use these variables accordingly to the general convention, and do not override its value.

For example:

export LD_LIBRARY_PATH=/your/own/path # don't do this!

This is an incorrect way of setting the value for the environment variable. Instead, it must be done this way:

export LD_LIBRARY_PATH=/your/own/path:$LD_LIBRARY_PATH

And the same goes for LD_PRELOAD variable.


Although I only execute my application once, multiple messages of "Using Speedus" appear<

We show the loading message every time the library is loaded, so, if your application creates new threads or processes that use sockets to communicate, they will load our solution and show the message as well. So don't worry about multiple loading messages, it's totally fine.


When I try to run my program with Speedus, this message appears: version GLIBC_2.9 not found (required by ...)<

The GNU C library (libc) from your system is too old to be compatible with that specific Speedus version. You must update your libc or OS version in order to run Speedus in your system. However, if this is not possible, you can tell us about your use case and we may be able to provide a custom version of Speedus for your configuration.


Although the examples work properly with Speedus, when I try to run it with ping, this message appears: "ERROR: ld.so: object 'libspeedus.so' from LD_PRELOAD cannot be preloaded: ignored."<

The ping binary has setuid permissions so, in order to preload Speedus with this kind of program from a non-privileged user, you need to:

Message "ERROR: ld.so: object 'libspeedus.so' from LD_PRELOAD cannot be preloaded: ignored." always appears, even following the examples in the documentation<

Check that the library has been properly installed in your system, so the .so files appear in their lib and lib32 directories.

One common mistake is to unzip the Speedus ZIP file in Windows and then copying the directory to a Linux platform. We recommend to unzip the build directly within the target system, since there are symbolic links in the ZIP file that can be incorrectly handled when unzipping in a Windows file system.


My question / issue is not here<

In this case, please contact us.