Friday, July 22, 2016

Today we continue our discussion of the  paper titled "Pelican: a  building block for exascale cold data storage". Pelican treats a group of disks as a single schedulable unit. Resource restrictions such as power consumption, vibrations and failure domains are expressed as constraints over these units.
With the help of resource constraints and scheduling units, Pelican aims to be better than its overprovisioned counterpart racks using computations in software stacks
Pelican uses resources from a set of resource domains which is a subset of disks. Pelican proposes a data layout and IO scheduling algorithms by expressing these resource domains as constraints over the disks. 
They also have failure domains for disks, frames and chassis.
Data layout conventionally proceeds with choosing 18 disks at random from a lift of 1152 disks. This results in a large number of combinations as 1152 Choose 18. The authors improve this naiive disk layout with by creating 'l' domains of disks and by ensuring that the domains share nothing. Each disk is a member of a single group and all disks within a group can be spinning concurrently. This reduces the complexity to determining l^2 pairs of logical groups  Furthermore, the authors make all the disks of one group as fully colliding with another group even if one of the disk collides with that of the other group.

#codingexercise
Given a binary tree, remove all of the half nodes ( those that have one child )
void RemoveHalfNodes(ref Node root)
{
if (root == null) return null;
RemoveHalfNodes(ref root.left);
RemoveHalfNodes(ref root.right);
if ( root.left == null &&
      root.right == null)
      return root;
if (root.left == null)
    {
       var temp = root.left;
       root.left =  null;
       delete root;
        root = temp
     }
if (root.right == null)
    {
       var temp = root.right;
       root.right =  null;
       delete root;
        root = temp
     }
}


No comments:

Post a Comment