Modeling application speedup in multi OS environments
With hardware silicon reaching its limits, there has been significant research in OS kernels, currently there is empirical study on application performance in multi-kernels (Intel mOS, IHK/McKernel) but there has not been a theoretical study on application speedup in multi-kernel environments, our group is the first to model application speedup in multi-kernels and provide insight to the developer on whether an application can benefit from running on a multi-kernel environment such as Intel mOS. I used strace to capture the system call traces of the application and mktrace a tool developed at HExSA Lab for simulating application performance on multi-kernel environments. Our model can determine the application speedup on a multi-kernel without having to run the application on a multi-kernel.
Blending device driver code into compilers
Modern day devices for example like Mellanox ConnectX-5 network cards provide us various features such as RDMA (remote direct memory access), low latency communication channels, SR-IOV which modern compilers can take advantage of and improve application performance significantly. I have built a connectX-3 InfiniBand device driver for Nautilus (aerokernel) with RDMA taking advantage of some of the hardware features of the card such as Blue Flame registers provided by Mellanox and we plan on extending LLVM to generate device driver code completely in user space without the involvement of the operating system enabling applications to bypass the kernel completely and have extremely fast communication between nodes.
This project is part of the Interweaving Project, a collaborative effort with Northwestern University to redesign the parallel hardware/software Stack. – http://interweaving.org
Dynamic behavior analysis of malwares using memory dumps
Current malware analysis tools rely on the underlying operating system for detecting systems infected with malwares, which make them less effective when there are major updates in the operating system, so in order to avoid having to change malware tools for every update of the operating system, we focus on the behavior of malwares, specifically how does the state of the memory change during an attack and we intend to build a tool for detecting malwares without having to make any assumptions of the underlying operating system on which the application runs on and also without compromising the performance of the kernel. We use Malrec dataset (66203 malwares) developed by Georgia Tech, NYU and MIT Lincoln Laboratory which uses PANDA’s whole-system deterministic record and replay to capture high-fidelity, whole-system traces of malware executions with low time and space overheads.
Built Infiniband device driver for Nautilus (aerokernel).
Built a custom compiler for a new programming language from scratch.
Modified Apache Tika for enhanced document (OCR) extraction features.
Built JVM with mark and sweep garbage collector in C.
Implemented messaging service similar to JMS for inter process communication between processes in Minix.
Built an OS for Raspberry Pi 3 from scratch.
Implemented external Tera sort for performance evaluation in Hadoop and Spark.