Salt just got faster!

I just pushed some exciting code up to the Salt develop branch. We push exciting code to Salt all the time, and our recent surge is contributions has been nothing short of exhilarating. But this change is very core to Salt.

When Salt was originally written I chose to use Python pickles to serialize data transferred over the network. I chose the pickle because it is one of the fastest serialization mediums available. But this choice had a number of drawbacks, primarily cross compatibility, and known security issues inside of pickle. I researched a number of serialization mediums to replace the pickle and finally found something that amazed me – MessagePack (http://msgpack.org/).

MessagePack is not only the fastest and most compact serialization I tested, it is also very Salt-like – simple! The implementation is compact and the format is direct.

This change also maintains a certain backwards compatibility, updated minions are not compatible with an old minion, but old minions are compatible with  a new master. This just means that the master needs to be updated first and set to keep using pickle as the serializer. Once all of your minions are updated change the master to only use msgpack.

The 0.9.5 release will have detailed instructions on upgrading.

This makes the Salt system much faster over the network, and can improve the speed of file transfers a great deal. In my tests file transfers are 2-3 times faster on average.

Please direct any questions to our great and growing community: http://saltstack.org/topics/community/

– Thomas S Hatch

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: