Difference between revisions of "Best practices on Lustre parallel file systems"
From ScientificComputing
(→Best practices) |
|||
Line 1: | Line 1: | ||
+ | <!-- | ||
==Introduction== | ==Introduction== | ||
− | Lustre is a type of parallel distributed file system, generally used for large-scale cluster computing. Files are distributed across multiple servers, and then striped across multiple disks. | + | Lustre is a type of parallel distributed file system, generally used for large-scale cluster computing. Files are distributed across multiple servers, and then striped across multiple disks. |
+ | The Lustre file system is shared among many users. It is optimized for parallel I/O and large files. Please note that | ||
+ | |||
+ | *working with a large number of small files | ||
+ | *running thousands of unnecessary I/O operations per second (running Open/Close in a loop) | ||
+ | *accessing the same file with hundreds of processes | ||
+ | |||
+ | will not only slow down your jobs. It can overload the entire file system affecting all users. Therefore please carefully read our best practices guide before using <tt>/cluster/work</tt> or <tt>/cluster/scratch</tt>. | ||
+ | |||
+ | ==Lustre architecture== | ||
A Lustre file system has three major functional units: | A Lustre file system has three major functional units: | ||
Line 15: | Line 25: | ||
==Best practices== | ==Best practices== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
===Limit repetitive Open/Close operations=== | ===Limit repetitive Open/Close operations=== | ||
If you need to write a lot of values into a file as part of a loop, then there are multiple ways of achieving this task. Please make sure that you never put the open and close statements inside the loop as shown in this Python example: | If you need to write a lot of values into a file as part of a loop, then there are multiple ways of achieving this task. Please make sure that you never put the open and close statements inside the loop as shown in this Python example: | ||
Line 101: | Line 103: | ||
* It is possible to create files with non-default striping parameters with the lfs command | * It is possible to create files with non-default striping parameters with the lfs command | ||
* A subdirectory '''inherits''' all stripe parameters from its parent directory (if not changed via lfs setstripe) | * A subdirectory '''inherits''' all stripe parameters from its parent directory (if not changed via lfs setstripe) | ||
+ | |||
+ | --> |