Skip to content

Commit a4f7468

Browse files
committed
feat: Export directory prefix (Darshan)
1 parent 3f83dcc commit a4f7468

File tree

3 files changed

+102
-71
lines changed

3 files changed

+102
-71
lines changed

drishti/handlers/handle_darshan.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -752,15 +752,12 @@ def handler():
752752
display_thresholds(console)
753753
display_footer(console, insights_start_time, insights_end_time)
754754

755-
filename = '{}.html'.format(args.log_path)
756-
export_html(console, filename)
755+
input_filename = os.path.basename(args.log_path).replace('.darshan', '')
756+
out_dir = args.export_dir if args.export_dir != "" else os.getcwd()
757757

758-
filename = '{}.svg'.format(args.log_path)
759-
export_svg(console, filename)
758+
print(f"DEBUG: outfile_name: {input_filename}")
760759

761-
filename = '{}-summary.csv'.format(
762-
args.log_path.replace('.darshan', '')
763-
)
764-
765-
export_csv(filename, job['job']['jobid'])
760+
export_html(console, out_dir, input_filename)
761+
export_svg(console, out_dir, input_filename)
766762

763+
export_csv(out_dir, input_filename, job['job']['jobid'])

drishti/includes/module.py

Lines changed: 85 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1823,76 +1823,99 @@ def display_footer(console, insights_start_time, insights_end_time):
18231823
)
18241824
)
18251825

1826-
def export_html(console, filename):
1826+
def export_html(console, export_dir, filename):
18271827
'''
18281828
'''
18291829

1830-
if args.export_html:
1831-
console.save_html(
1832-
filename,
1833-
theme=set_export_theme(),
1834-
clear=False
1835-
)
1830+
if not args.export_html:
1831+
print("DEBUG: export_html() - return")
1832+
return
18361833

1834+
os.makedirs(export_dir, exist_ok=True)
1835+
filepath = os.path.join(export_dir, f"{filename}.html")
18371836

1838-
def export_svg(console, filename):
1839-
if args.export_svg:
1840-
console.save_svg(
1841-
filename,
1842-
title='Drishti',
1843-
theme=set_export_theme(),
1844-
clear=False
1845-
)
1837+
console.save_html(
1838+
filepath,
1839+
theme=set_export_theme(),
1840+
clear=False
1841+
)
18461842

1843+
print("DEBUG: END export_html()")
18471844

1848-
def export_csv(filename, jobid=None):
1849-
if args.export_csv:
1850-
issues = [
1851-
'JOB',
1852-
INSIGHTS_STDIO_HIGH_USAGE,
1853-
INSIGHTS_POSIX_WRITE_COUNT_INTENSIVE,
1854-
INSIGHTS_POSIX_READ_COUNT_INTENSIVE,
1855-
INSIGHTS_POSIX_WRITE_SIZE_INTENSIVE,
1856-
INSIGHTS_POSIX_READ_SIZE_INTENSIVE,
1857-
INSIGHTS_POSIX_HIGH_SMALL_READ_REQUESTS_USAGE,
1858-
INSIGHTS_POSIX_HIGH_SMALL_WRITE_REQUESTS_USAGE,
1859-
INSIGHTS_POSIX_HIGH_MISALIGNED_MEMORY_USAGE,
1860-
INSIGHTS_POSIX_HIGH_MISALIGNED_FILE_USAGE,
1861-
INSIGHTS_POSIX_REDUNDANT_READ_USAGE,
1862-
INSIGHTS_POSIX_REDUNDANT_WRITE_USAGE,
1863-
INSIGHTS_POSIX_HIGH_RANDOM_READ_USAGE,
1864-
INSIGHTS_POSIX_HIGH_SEQUENTIAL_READ_USAGE,
1865-
INSIGHTS_POSIX_HIGH_RANDOM_WRITE_USAGE,
1866-
INSIGHTS_POSIX_HIGH_SEQUENTIAL_WRITE_USAGE,
1867-
INSIGHTS_POSIX_HIGH_SMALL_READ_REQUESTS_SHARED_FILE_USAGE,
1868-
INSIGHTS_POSIX_HIGH_SMALL_WRITE_REQUESTS_SHARED_FILE_USAGE,
1869-
INSIGHTS_POSIX_HIGH_METADATA_TIME,
1870-
INSIGHTS_POSIX_SIZE_IMBALANCE,
1871-
INSIGHTS_POSIX_TIME_IMBALANCE,
1872-
INSIGHTS_POSIX_INDIVIDUAL_WRITE_SIZE_IMBALANCE,
1873-
INSIGHTS_POSIX_INDIVIDUAL_READ_SIZE_IMBALANCE,
1874-
INSIGHTS_MPI_IO_NO_USAGE,
1875-
INSIGHTS_MPI_IO_NO_COLLECTIVE_READ_USAGE,
1876-
INSIGHTS_MPI_IO_NO_COLLECTIVE_WRITE_USAGE,
1877-
INSIGHTS_MPI_IO_COLLECTIVE_READ_USAGE,
1878-
INSIGHTS_MPI_IO_COLLECTIVE_WRITE_USAGE,
1879-
INSIGHTS_MPI_IO_BLOCKING_READ_USAGE,
1880-
INSIGHTS_MPI_IO_BLOCKING_WRITE_USAGE,
1881-
INSIGHTS_MPI_IO_AGGREGATORS_INTRA,
1882-
INSIGHTS_MPI_IO_AGGREGATORS_INTER,
1883-
INSIGHTS_MPI_IO_AGGREGATORS_OK
1884-
]
1885-
if codes:
1886-
issues.extend(codes)
18871845

1888-
detected_issues = dict.fromkeys(issues, False)
1889-
detected_issues['JOB'] = jobid
1846+
def export_svg(console, export_dir, filename):
1847+
if not args.export_svg:
1848+
return
1849+
1850+
os.makedirs(export_dir, exist_ok=True)
1851+
filepath = os.path.join(export_dir, f"{filename}.svg")
1852+
1853+
console.save_svg(
1854+
filepath,
1855+
title='Drishti',
1856+
theme=set_export_theme(),
1857+
clear=False
1858+
)
18901859

1891-
for report in csv_report:
1892-
detected_issues[report] = True
18931860

1894-
with open(filename, 'w') as f:
1895-
w = csv.writer(f)
1896-
w.writerow(detected_issues.keys())
1897-
w.writerow(detected_issues.values())
1861+
def export_csv(export_dir, filename, jobid=None):
1862+
if not args.export_csv:
1863+
return
1864+
1865+
issues = [
1866+
'JOB',
1867+
INSIGHTS_STDIO_HIGH_USAGE,
1868+
INSIGHTS_POSIX_WRITE_COUNT_INTENSIVE,
1869+
INSIGHTS_POSIX_READ_COUNT_INTENSIVE,
1870+
INSIGHTS_POSIX_WRITE_SIZE_INTENSIVE,
1871+
INSIGHTS_POSIX_READ_SIZE_INTENSIVE,
1872+
INSIGHTS_POSIX_HIGH_SMALL_READ_REQUESTS_USAGE,
1873+
INSIGHTS_POSIX_HIGH_SMALL_WRITE_REQUESTS_USAGE,
1874+
INSIGHTS_POSIX_HIGH_MISALIGNED_MEMORY_USAGE,
1875+
INSIGHTS_POSIX_HIGH_MISALIGNED_FILE_USAGE,
1876+
INSIGHTS_POSIX_REDUNDANT_READ_USAGE,
1877+
INSIGHTS_POSIX_REDUNDANT_WRITE_USAGE,
1878+
INSIGHTS_POSIX_HIGH_RANDOM_READ_USAGE,
1879+
INSIGHTS_POSIX_HIGH_SEQUENTIAL_READ_USAGE,
1880+
INSIGHTS_POSIX_HIGH_RANDOM_WRITE_USAGE,
1881+
INSIGHTS_POSIX_HIGH_SEQUENTIAL_WRITE_USAGE,
1882+
INSIGHTS_POSIX_HIGH_SMALL_READ_REQUESTS_SHARED_FILE_USAGE,
1883+
INSIGHTS_POSIX_HIGH_SMALL_WRITE_REQUESTS_SHARED_FILE_USAGE,
1884+
INSIGHTS_POSIX_HIGH_METADATA_TIME,
1885+
INSIGHTS_POSIX_SIZE_IMBALANCE,
1886+
INSIGHTS_POSIX_TIME_IMBALANCE,
1887+
INSIGHTS_POSIX_INDIVIDUAL_WRITE_SIZE_IMBALANCE,
1888+
INSIGHTS_POSIX_INDIVIDUAL_READ_SIZE_IMBALANCE,
1889+
INSIGHTS_MPI_IO_NO_USAGE,
1890+
INSIGHTS_MPI_IO_NO_COLLECTIVE_READ_USAGE,
1891+
INSIGHTS_MPI_IO_NO_COLLECTIVE_WRITE_USAGE,
1892+
INSIGHTS_MPI_IO_COLLECTIVE_READ_USAGE,
1893+
INSIGHTS_MPI_IO_COLLECTIVE_WRITE_USAGE,
1894+
INSIGHTS_MPI_IO_BLOCKING_READ_USAGE,
1895+
INSIGHTS_MPI_IO_BLOCKING_WRITE_USAGE,
1896+
INSIGHTS_MPI_IO_AGGREGATORS_INTRA,
1897+
INSIGHTS_MPI_IO_AGGREGATORS_INTER,
1898+
INSIGHTS_MPI_IO_AGGREGATORS_OK
1899+
]
1900+
if codes:
1901+
issues.extend(codes)
1902+
1903+
detected_issues = dict.fromkeys(issues, False)
1904+
detected_issues['JOB'] = jobid
1905+
1906+
for report in csv_report:
1907+
detected_issues[report] = True
1908+
1909+
# ensure dir exists
1910+
os.makedirs(export_dir, exist_ok=True)
1911+
filepath = os.path.join(export_dir, f"{filename}.csv")
1912+
1913+
print(f"DEBUG: export_dir: {export_dir}")
1914+
print(f"DEBUG: filename: {filename}")
1915+
print(f"DEBUG: filepath: {filepath}")
1916+
1917+
with open(filepath, 'w') as f:
1918+
w = csv.writer(f)
1919+
w.writerow(detected_issues.keys())
1920+
w.writerow(detected_issues.values())
18981921

drishti/includes/parser.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,13 @@
9696
help='Export a CSV with the code of all issues that were triggered'
9797
)
9898

99+
parser.add_argument(
100+
'--export_dir',
101+
default="",
102+
dest='export_dir',
103+
help='Specify the directory prefix for the output files (if any)'
104+
)
105+
99106
parser.add_argument(
100107
'--json',
101108
default=False,
@@ -119,3 +126,7 @@
119126
)
120127

121128
args = parser.parse_args()
129+
130+
print(f"DEBUG: log_path: {args.log_path}")
131+
print(f"DEBUG: export_path: {args.export_dir}")
132+
print(f"DEBUG: export_csv: {args.export_csv}")

0 commit comments

Comments
 (0)