[MPICH2-dev] alignment hints for calculating the file domain.
wangdi
wangdi at clusterfs.com
Mon Jul 9 23:32:38 CDT 2007
Hello,
We are trying to improve lustre adio driver currently for mpich2. We
found that
all the file system use ADIOI_GEN_WriteStridedColl as their collective
write API in MPICH2.
In this API, it will calculate the file domains and distribute the I/O
segment evenly around all the
clients according to the file domain size. And, when calculating the
file domains, it just divide
the whole i/o area(min, max) by the count of the clients, but did not take
into account the specifics of some file systems, which might be
sensitive to this file_domain_size.
For example, some file system might need special alignment for better
performance instead of
this evenly divided domain_size.
So could you export a new API (ADIOI_Calc_file_domains) here, then those
file systems, which are not
sensitive to the alignment, just call current calc_file_domains
API(might be renamed as
ADIO_GEN_Calc_file_domains), and for those file systems, which need the
special alignment could get
a alignment hint before real calculation. Maybe the calc file domain API
could be changed in this way?
ADIOI_XXX_Calc_file_domains()
{
int alignment = get_xxx_alignment();
*fd_size_ptr = alignment;
ADIOI_GEN_Calc_file_domains(......, fd_size_ptr);
}
ADIOI_GEN_Calc_file_domains(......, *fd_size)
he
{
int alignment = *fd_size_ptr;
........
fd_size = ((max_end_offset - min_st_offset + 1) + nprocs_for_coll -
1)/nprocs_for_coll;
if (alignment != 0) {
fd_size = ((fd_size + alignmentan - 1) / alignment) * alignment;
}
........
*fd_size_ptr = fd_size;
}
Thanks
--
Regards,
Tom Wangdi
--
Cluster File Systems, Inc
Software Engineer
http://www.clusterfs.com
More information about the mpich2-dev
mailing list