Thursday, June 12, 2014

Where the Tactonic Project Went

The recent posts have been about Heroku, so it's time for an update on the in-progress project involving the Tactonic sensors. The last thing that I posted on regarding this was the concave hull search and optimizing the whole process. The past three weeks have been (in addition to Heroku work) been spent continuing to optimize the Tactonic server and setting up benchmarks for the client end of this process.
The server has been updated to include mutual exclusion around accesses to the shared force grid, JSON output, and a re-vamped group-grabbing operation that eliminates some redundant/repeated calculations. When last I posted about this system, there was a data freeze that affected the system after running it for a period of time. After these upgrades, I am fairly confident that the freeze is on the hardware end, especially since the copy of the force grid that the server works with does not persist between client requests. Logs show that the group grabbing process still occurs after the freeze, and the force grid continues to be copied to a fresh array for processing after the freeze. This tells me that the device driver stops reading in new values at some point, or else the device stops registering new values. Whatever the case, I can get about 15 minutes of uptime (it varies widely, but on average about 15 minutes) before having to restart the server.
I switched to JSON output from plain text because JavaScript has built in facilities to read JSON, and it allows the server to send named fields to the client. This should hopefully reduce some of the overhead in creating new variables to hold parsed plain text, and in having to do the actual text parsing and transformations. The benchmarks will yield the results of these changes, and as soon as I've analyzed the results they will be posted here. I may also implement the client using Node.js and benchmark on that platform, time permitting.

No comments:

Post a Comment