 |
 |
 |
|
|
| |
|
|
 |
| |
 |
|
 |
 |
 |
 |
 |
At
Microsoft India Development
Center our teams develop
strategic products for Microsoft
|
|
| |
|
|
 |
 |
|
 |
|
 |
|
 |
|
 |
|
 |
|
|
|
 |
 |
 |
 |
|
 |
 |
 |
 |
 |
 |
 |
 |
| IIT-Chennai |
Area
of Work
MOM
Management Pack |
 |
The goal of the internship project was
to develop a tool for automatic integration
of application specific events and performance
counters into Microsoft Operations Manager
(MOM). |
 |
 |
 |
|
 |
 |
MOM
uses Management Packs to monitor
various applications. A Management
Pack comprises rules for processing
event and performance data and
other knowledge base for a monitored
application or set of applications.
The idea was to demonstrate how
MOM Management Pack creation can
be simplified by increased automation.
Once the administrator selects
the application to be monitor
the tool would find all events
and performance counters and enumerates
them in Graphical User Interface.
This offers the user the ability
to create Management pack with
a few clicks to select the events
and counters he is interested
in. User can search for specific
key words and select the events
of interest.
The project involved getting familiar
with .NET and C# technologies,
understanding MOM product and
establishing the necessary framework
for the tool. |
|
 |
 |
 |
10 weeks |
 |
 |
 |
|
 |
 |
Srinivas
was able to come up with a tool
which takes an application name,
enumerates all the events and
performance counters by going
through all application libraries
and executables, presented them
in a GUI framework, provided ways
to search and filter the events/perf
counters and then created MOM
management packs. Using the tool
Services for UNIX team was able
to create a Management Pack for
their UNIX server. |
|
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
|
 |
 |
 |
| NIT-Trichy |
Area
of Work
Operating
Systems |
 |
The
Interix subsystem (PSXSS.EXE) and its
accompanying utilities provide with
an environment on Windows that resembles
any other UNIX system. The current subsystem
design is such that the feature set
is limited to just the common set of
features available on all flavors of
UNIX. Whenever new features are developed
or existing features are changed in
the UNIX world, the Interix source code
has to be re-written. A more appealing
alternative would be to modify the very
design of the subsystem so that it can
easily adapt to the changes on the fly
rather than requiring source code re-write. |
 |
 |
 |
|
 |
 |
Transaction
model
Redesign the subsystem (PSXSS.EXE)
to act like a database, and create
a set of APIs that do transactions
to this database. In order to
facilitate this without jeopardizing
the integrity of the subsystem
data structures, the subsystem
itself should export transaction
primitives that provide controlled
access to its privy data structures.
We expose these primitives in
a SDK. The designer will use it
in their DLL. This SDK is built
as a static windows library (transaction.lib).
Message
Packaging:
The basic mechanism to interact
with the subsystem at system calls
would still remain the same, i.e.
via Local Procedure Calls. Redesign
the DLL that links to all Interix
applications. Provide new system
calls that enable packaging of
the message and sending them across
to PSXSS.EXE. The module designer
uses these when he implements
a new system call. The designer
will implement the new system
call in a static library that
links to the application.
Loading
the module:
A new system call load_module()
and a accompanying utility loadmodule
has been implemented to facilitate
the dynamic loading of DLLs. The
load_module() system call takes
one argument: the Interix pathname
of the module to be loaded (built
as a DLL). |
|
 |
 |
 |
10 weeks |
 |
 |
 |
|
 |
 |
Rohini
was able to extend the /proc file
system to show FileHandles held
by a process (like other UNIX's)
on Interix. Microsoft has filed
a Patent Application along with
Rohini and the work is in process
of publishing this work. |
|
|
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
| |
 |
 |
 |
| IIT-Kanpur |
Area
of Work
Operating
Systems |
 |
Interix subsystem on windows provides
a rich set of UNIX semantic api’s, SDK
and utilities which helps in UNIX application
to migrate to Windows. (http://www.microsoft.com/windowsserversystem/sfu/default.mspx).
But the above scenario requires user
to recompile the source code using Interix
SDK generating windows PE format before
execution. We required a way where user
can execute the UNIX binaries (ELF format)
on windows without going through the
recompilation phase. |
 |
 |
 |
|
 |
 |
ELF loading
When Interix finds an ELF format
binary that has to be executed
it launches a process which loads
binary into its own address space
parses the elf headers, does the
required initialization and jumps
to the entry point for execution.
System call shimming layer
System calls are redirected to
the Interix subsystem. There is
a shimming layer between the actual
call and the Interix call which
takes care of syntactic/semantic
differences of API’s from other
UNIX to Interix
Handling semantic differences
in the subsystem
The file system hierarchy and
proc file system was modified
to provide the information required
by the UNIX variant. The ELF binary
was executed after doing a chroot
into folder which provided the
required semantics. A lot of interesting
problems involving signaling,
fork, dynamic loading (*.so) etc
had to be handled to get the binaries
running. |
|
 |
 |
 |
10 weeks |
 |
 |
 |
|
 |
 |
Ashish
was able to run different UNIX
binaries like shell and utilities
on this framework. |
|
|
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
| |
 |
 |
 |
| IIIT-Allahabad |
Area
of Work
Software
Verification |
 |
Identifying
lock orders of the software and finding
lock order violations. Also improving
the lock window for data protection. |
 |
 |
 |
|
 |
 |
This
work attempts to solve traditional
hard problems of data protection
in multi-threaded applications
using static analysis & run
time profiling of a process. It
can map a lock to the memory addresses
protected by it & can find
out any violations based on access
at run time. It also finds out
the lock order in an application
& detects lock order violations
at run time. This situation otherwise
can potential lead to deadlock
& is hard to detect.
Based on the profiling data to
measure locality of data access,
it assigns affinity to the threads
for performance. This work can
be potentially used for more fine
grained analysis on lock contentions,
performance of multi threaded
applications & race detection.
|
|
 |
 |
 |
10 weeks |
 |
 |
 |
|
 |
 |
Nitin
was able to demo lock order generation,
violations, window of locks and
affinity based performance improvements
for multi threaded applications. |
|
|
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
| |
|
|
| |
|
|
|
|
 |
 |
 |
 |
 |
 |
 |
| Here
are some of the questions that the code4bill contestants
answered. How about trying your hand at them? |
| • |
Multiply
14332 represented in base -7 with 16430 represented
in base -8 and represent the output in base -9. |
| • |
An array
contains 9 occurrences of 0s, 8 occurrences of 1s and
7 occurrences of 2s in any order. The array is to be
sorted using only swap operations. What is the minimum
number of swaps needed in the worst case to sort the
array? |
| • |
You are given an infinite number of cookie boxes containing either 6, 9 or 400 cookies. You are allowed to use these boxes in any combination so desired. What is the maximum number of cookies that you cannot give out using the above boxes? |
|
|
 |
|
 |
|
 |
|
 |
 |
|
|
|
|
|