[v2] [GSoC 2017] Instrumentation of Rust applications

"Saurav Sachidanand" <[email protected]> Fri, 3 Mar 2017 19:00:07 +0000
Newsgroups gmane.comp.sysutils.pcp
Message-ID <[email protected]>
Sorry about the last mail with bad formatting. Didn't know it had to
be plain text.

--------

Hello PCP developers,

I'm Saurav Sachidanand, and I'm a CS sophomore studying in India.

For more than year I've been programming in Rust and have published
some personal projects in it (few involving the Rust-C FFI) and have
contributed a few patches to Servo (github.com/saurvs). This year, I'm
really interested in the GSoC project for implementing a native Rust
library that enables instrumentation through PCP. I've begun exploring
the PCP tools on Fedora and have started reading up on the developer
documentation. I've also cloned the Speed repository and tried out the
examples by inspecting them using mmvdump.

After reading the project description and skimming through the Speed
source code, I'm assuming the following are the deliverables involved
with the project
- native Rust library to write out metrics as memory mapped values
-  native Rust library, and command line utility, to dump metrics from
memory mapped values
- a high-level Rust API to easily expose metrics from an application,
following the pattern established in Speed (Client, Registry, Metric,
Counter, Gauge etc.)
- continuous integration through Travis CI, code coverage through
Codecov (coveralls doesn't support Rust)
- documentation using rustdoc and host on Github Pages
- as a separate library, Rust bindings to libpcp_trace
- create Rust examples showing usage of the API, and also
embedded this instrumentation capability to popular frameworks like
hyper and iron
- as a stretch goal, implement a PCP agent in Rust to export metrics
directly, similar to parfait-agent

A major challenge in this project would be that in Rust there is no
universally safe way to deal with memory mapped files, as there are
very few, if any at all, compile-time guarantees the Rust compiler can
make about reads and writes to an mmapped file. Hence, there's no
support for it in the standard library. We'll have to write our own
little module around libc::mmap to get only the functionality we need,
or use a third party crate like memmap-rs or rust-mmap.

Does this outline look good enough to begin writing a proposal? Any
feedback/comments on the above will be greatly appreciated.

Thanks,
Saurav

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links:

You receive all messages sent to this group.

View/Reply Online (#15307): https://groups.io/g/pcp/message/15307
View All Messages In Topic (1): https://groups.io/g/pcp/topic/4461365
Mute This Topic: https://groups.io/mt/4461365?uid=174580
New Topic: https://groups.io/g/pcp/post
-=-=-
pcp mailing list
[email protected]
https://groups.io/g/pcp/messages
-=-=-
Change Your Subscription: https://groups.io/g/pcp/editsub?uid=174580
Group Home: https://groups.io/g/pcp
Contact Group Owner: [email protected]
Terms of Service: https://groups.io/static/tos
Unsubscribe: https://groups.io/g/pcp/leave/354243/563757577/xyzzy
-=-=-=-=-=-=-=-=-=-=-=-