[Twg] Rough requirements

Andreas Dilger adilger at whamcloud.com
Tue Feb 8 08:06:51 UTC 2011


I'm just adding some notes for each item to give an idea where it stands today.

idea = just something that was discussed
design = a written design exists
code = some code exists


Also, I won't be able to attend the Thursday meeting, possibly Eric will be able to attend.

On 2011-02-04, at 16:01, David Dillow wrote:
> Performance requirements
> 
> Metadata Performance
> [[ mainly an import of John's list ]]
> 
> * metadata performance
> 
>    GOAL: improve file system scalability and interactive
>          performance
> 
>    requirements:                  Q2 2012         Q1 2014
>                                --------------  -----------------
>    -  # files in file system    100 billion       1 trillion
>    -  # files in directory       50 million      10 billion

The 2012 numbers could be attainable with CMD + ldiskfs, if one considers 1-2B inodes/fs, 0.5-1M inodes/dir and 50-100 MDTs.  I don't think the 2014 numbers are achievable with ldiskfs, unless we really push the number of MDTs to the ~500 range.  It is definitely higher than the number we were thinking about for CMD.

>    -  aggregate file creates/s  100 thousand       ?
>     - single file creates/s         ?            30 thousand
>    -  directory listings/s          ?              ?
>    -  open files per client        -           100 thousand
>    -  file system capacity       30 PB          100 PB
>    -  # clients                  30 thousand       ?

I would put most of these requirements  in the "idea/code" stage.  Some CMD code exists, some needs to be written and has only been discussed.

> [[ There is a question as to what's driving 10 billion files in a directory?
>   How does one expect ls to work in that directory? Is that expected to
>   be POSIX compliant? ]]
> [[ open files per client instead of open files per process? or is that
>   total open files per system or job? We've already passed that it seems... ]]
> 
> * backend storage
> 
>    GOAL: provide reliable, scalable backing store for 
>          Lustre servers
> 
>    requirements: 
>    -  large LUNs (min?, max?)
> [[ suggest 32 TB for minimum max LUN size supported near term, 64 TB for
>   mid-term ]]

code exists in e2fsprogs, ext4, needs testing, integrated testing with Lustre.  Also needs additional fixes to support large objects (> 2TB)

>    -  end-to-end data integrity 
>       (ie provide resiliency that T10 PI gives local file systems)

idea - T10 for ldiskfs
design - end-to-end checksum design for HPCS

>    -  low performance impact for file system repair

idea/code - slow OST avoidance, improved MDS object allocation algorithm

> [[ Eric notes that find has a similar set of requirements as ls ]]
> [[ full bandwidth and IOPs for a single shared files -- this is wide stripe ]]
> [[ Improved small file IO performance ]]
> 
> 
> Quality of service
> 
> 	Existing deployments currently have no mechanism to balance the
> performance needs of interactive users against the needs of large-scale
> compute jobs -- it is possible and likely that directory listings will
> encounter absurdly long execution times when competing against a 200,000
> core checkpoint operation. To maintain usability in such scenarios, Lustre
> must be able to allocate a {job,cluster,user} a share of IOPS and bandwidth
> consumate with the priority levels assigned by an administrator.

code - prototype NRS code exists, needs review, testing

> Scalable fault management
> 
> 	While it is already the case that today's supercomputers have a
> marked dependence on their file systems for productive use, this dependency
> will continue to rise as we see more and more center-wide file systems. To
> minimize the downtime for the entire center, reliability must increase and
> recovery from faults must be bounded in time. Lustre must be able to recovery
> in O(log n) time or better as a mid-term goal to meet this requirement.
> [[ Replication to achieve fault tolerance was mentioned --
>   requirement vs implementation detail? ]]

idea

> Improved configuration of Lustre
> 
> 	The current mechanism of using module parameters is relatively
> inflexible and can constrain large, complex Lustre configurations. As a
> short- to mid-term requirement, Lustre must have the ability to allow
> dynamic configuration of the LNET interfaces and routes. This ability should
> include the ability to bind targets (OST/MDT/etc) to specific LNET interfaces,
> and to hot-add or hot-remove LNET interfaces.

idea

> Allowing for controlled partial-system maintenance
> 
> 	Currently, to upgrade a Lustre installation or perform maintenance
> on a subset of the comprising hardware, one must unmount the filesystem from
> all clients or risk hanging processes until the hardware is back online
> (maintenance) or other odd, undefined client behavior once the upgrade
> completes. To allow more flexible administration, the filesystem must be able
> to handle these situations gracefully, and allow the clients to avoid
> attempting to use hardware known to be down.
> [[ AKA Administrative Server Shutdown ]]

idea

> Balancing storage use
> 
> 	Currently, ensuring a balanced use of the storage space available
> to Lustre relies on a haphazard set of setting default stripping, storage
> pools, and manual rebalancing of overfull OSTs. As a mid-term goal, Lustre
> must be able to allow automatic emptying of an OST, migrating the data
> to other devices in the filesystem. Similarly, Lustre must be able to
> rebalance the storage load over new OSTs as they are added. Additionally,
> Lustre must be able require authorization for use of specific storage pools.

idea - object migration
idea - improved MDS object allocation

> more management
> [[
> 	how to handle integrity check requirements, split online/offline?
> 
> 	Improved analysis and visualization tools?

code - some work has been done on this to convert Lustre RPCTRACE logs to OTF for viewing in VampirTrace.  Is that an open-source tool?

> 	Better userspace tools
> 		-- redo llapi
> 		-- lctl
> ]]
> 
> Improved storage semantics/interfaces
> [[ need verbiage, possible requirements:
> 	ADIO/MPI-IO improvements
> 		collective open?

idea

> 	Better ability for user to specify expected access patterns
> 		-- fadvise() to say "I will use this range, get the
> 			appropriate locks"

idea

> 	Support Linux AIO to make O_DIRECT more useful

idea

> 	readdir+/statlite/collective open from POSIX HECEWG

idea/code - some code proposed to kernel developers in the past, got bogged down in a morass of feature bloat.

> Misc
> [[
> 	Improved LNET bandwidth and reliability
> 		-- channel bonding

idea

> 	Improved security
> 		-- user name mapping

code for 1.8.  Needs efficient NID matching, per discussions with Eric in the distant past.

> 		-- propagating authorization from MDT to OST through
> 			trusted channels rather than untrusted clients

idea

> 	Patchless server and better support for upstream kernels

idea/design - detailed descriptions of how to remove each patch, some work done for RHEL6/Lustre 2.1



Cheers, Andreas
--
Andreas Dilger 
Principal Engineer
Whamcloud, Inc.




More information about the Twg mailing list