Review of "Manageability, availability, and performance in Porcupine"

From: Jeff Duzak (jduzak_at_exchange.microsoft.com)
Date: Wed Feb 25 2004 - 13:30:00 PST

  • Next message: Manish Mittal: "Manageability, Availability and Performance in Porcupine: A Highly Scalable Internet Mail Service."

    This paper describes Porcupine, a distributed email server. The goal of
    the system is to be highly scalable, which the authors define as
    consisting of manageability, availability, and performance. The system
    runs on a cluster of commodity machines, the advantages of which were
    described by the previous paper (Fox et al). The paper describes the
    architecture of the system, talks about the handling of events such as
    node adds and drops, and evaluates the performance of the system.
     
    Porcupine is very similar to the TranSend system described by Fox et al.
    The main distinction between the two systems is that Porcupine is
    homogenous, in the sense that each node performs all of the tasks of the
    system. In TranSend, nodes were delegated specific tasks.
     
    Since there is no specific machine responsible for backing storage, hard
    state is fragmented and distributed between multiple machines. Soft
    state is used to improve performance. Soft state is defined as state
    that, if lost, can be reconstructed from hard state. So, the soft state
    is essentially a cache of the hard state. An example of soft state is a
    user's profile. When a user is connected to a node in order to send or
    receive mail, that user's profile is requested from the machine
    responsible for its storage, and is retained as soft state on that node
    to which the user is connected.
     
    Scalability is aided by the fact that mail messages can be stored and
    retrieved at any of several nodes. A user's mailbox is split between
    several nodes. The count of these nodes depends on a system parameter
    called the spread. An incoming message can be stored at any node on
    which a fragment of the user's mailbox is stored, and then the remaining
    nodes will (asynchronously) be notified of the existance of the message.
    This can cause some consistency problems. For example, the contents of
    a user's mailbox may differ depending on the node to which the user is
    connected. However, these consistency problems are acceptable.
     
    The performance of Porcupine was compared to that of a standard SMTP
    server. Without replication, the Porcupine system performed better than
    the standard SMTP server. However, the authors postulated that the
    standard SMTP systems could, with some optimizations, match the
    performance of the Porcupine system without replication.
     
    Where the Porcupine system really wins is with skewed load and
    heterogeneous equipment. A standard SMTP server statically assigns a
    mailbox to a particular machine. Therefore, if user mail is unbalanced,
    the load between machines is unbalanced. Porcupine, on the other hand,
    distributes load dynamically based on the backlog of work on each
    machine. Therefore, it can handle non-uniform distribution of mail.
    The same mechanism also allows the system to distribute load based on
    the capabilities of each machine, and to automatically redistribute when
    a new machine is added or new hardware is added to a machine.
     
    To have a system such as Porcupine automatically adjust to the equipment
    on which it runs seems a really good idea, and it seems necessary in
    order to take advantage of the relative cheapness of commodity
    equipment. Further, it seems as though self-management will be a
    requirement of future systems, simply because their scale makes manual
    configuration and management prohibitive.


  • Next message: Manish Mittal: "Manageability, Availability and Performance in Porcupine: A Highly Scalable Internet Mail Service."

    This archive was generated by hypermail 2.1.6 : Wed Feb 25 2004 - 13:30:02 PST