# dsort **Repository Path**: shinian9712/dsort ## Basic Information - **Project Name**: dsort - **Description**: numa优化外排序 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-07-09 - **Last Updated**: 2022-03-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # D-SORT 针对numa结构优化的外排序程序。 ## 工具集 ### 程序 - 随机数生成程序 rnum - 文件分割程序 split - K路归并排序程序 msort ## 随机数生成程序 rnum : 在当前目录下生成随机数文件,大小为GB的整数倍。 状态:已完成 ### 参数 - -f[name] 输出文件名 - -s[size] 生成文件大小,单位:GB ### 例子 rnum -ftmp -s1024 : 在当前目录下生成1024GB的随机数文件,并将其命名为tmp。 ## 文件分割程序 split : 将当前目录下未排序的文件分割为多个归并段,并将这些归并段存入*.split文件夹中。 状态:已完成 备注:内存压力大,访存速度敏感。 ### 参数 - -f[name] 当前目录需要分割的文件 - -b[bs] 单个内存缓冲区/输出文件大小为 256*bs MB - -c[bc] 使用bc个内存缓冲区 - -s[st] 使用st个线程进行排序 - -numa 针对numa优化 ### 例子 split -ftmp -b1 -c12 -numa -s8 : 将当前目录下tmp文件分割为多个大小为256MB的归并段,并将这些归并段存入tmp.split目录下。使用12个大小为256MB的内存缓冲区,8个线程进行排序。 ## K路归并排序程序 msort : K路归并排序程序。 状态:已完成 备注:内存压力小,IO压力大。 ### 参数 - -i[dir] 合并dir.split文件夹中所有文件 - -k[num] 每个线程最多同时使用num路进行归并 - -s[st] 使用st个线程进行归并 - -numa 针对numa优化 ## 其他 - numa优化:只针对4节点,每节点16个CPU平台优化。其他平台添加-numa参数会导致不可预知行为。 - IO优化:split:每次IO都至少连续读或写1GB。msort:设置多输入输出缓冲来使IO和归并尽可能并行进行。