|
1 | 1 | #!/usr/bin/env python3 |
2 | 2 |
|
3 | | -import datetime |
4 | 3 | import csv |
| 4 | +import datetime |
5 | 5 | import time |
| 6 | + |
6 | 7 | import pandas as pd |
7 | 8 | from rich import box |
8 | 9 | from rich.syntax import Syntax |
| 10 | + |
9 | 11 | from drishti.includes.config import * |
10 | 12 |
|
11 | 13 | ''' |
@@ -1823,76 +1825,99 @@ def display_footer(console, insights_start_time, insights_end_time): |
1823 | 1825 | ) |
1824 | 1826 | ) |
1825 | 1827 |
|
1826 | | -def export_html(console, filename): |
| 1828 | +def export_html(console, export_dir, filename): |
1827 | 1829 | ''' |
1828 | 1830 | ''' |
1829 | 1831 |
|
1830 | | - if args.export_html: |
1831 | | - console.save_html( |
1832 | | - filename, |
1833 | | - theme=set_export_theme(), |
1834 | | - clear=False |
1835 | | - ) |
| 1832 | + if not args.export_html: |
| 1833 | + print("DEBUG: export_html() - return") |
| 1834 | + return |
1836 | 1835 |
|
| 1836 | + os.makedirs(export_dir, exist_ok=True) |
| 1837 | + filepath = os.path.join(export_dir, f"{filename}.html") |
1837 | 1838 |
|
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 | | - ) |
| 1839 | + console.save_html( |
| 1840 | + filepath, |
| 1841 | + theme=set_export_theme(), |
| 1842 | + clear=False |
| 1843 | + ) |
1846 | 1844 |
|
| 1845 | + print("DEBUG: END export_html()") |
1847 | 1846 |
|
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) |
1887 | 1847 |
|
1888 | | - detected_issues = dict.fromkeys(issues, False) |
1889 | | - detected_issues['JOB'] = jobid |
| 1848 | +def export_svg(console, export_dir, filename): |
| 1849 | + if not args.export_svg: |
| 1850 | + return |
| 1851 | + |
| 1852 | + os.makedirs(export_dir, exist_ok=True) |
| 1853 | + filepath = os.path.join(export_dir, f"{filename}.svg") |
| 1854 | + |
| 1855 | + console.save_svg( |
| 1856 | + filepath, |
| 1857 | + title='Drishti', |
| 1858 | + theme=set_export_theme(), |
| 1859 | + clear=False |
| 1860 | + ) |
1890 | 1861 |
|
1891 | | - for report in csv_report: |
1892 | | - detected_issues[report] = True |
1893 | 1862 |
|
1894 | | - with open(filename, 'w') as f: |
1895 | | - w = csv.writer(f) |
1896 | | - w.writerow(detected_issues.keys()) |
1897 | | - w.writerow(detected_issues.values()) |
| 1863 | +def export_csv(export_dir, filename, jobid=None): |
| 1864 | + if not args.export_csv: |
| 1865 | + return |
| 1866 | + |
| 1867 | + issues = [ |
| 1868 | + 'JOB', |
| 1869 | + INSIGHTS_STDIO_HIGH_USAGE, |
| 1870 | + INSIGHTS_POSIX_WRITE_COUNT_INTENSIVE, |
| 1871 | + INSIGHTS_POSIX_READ_COUNT_INTENSIVE, |
| 1872 | + INSIGHTS_POSIX_WRITE_SIZE_INTENSIVE, |
| 1873 | + INSIGHTS_POSIX_READ_SIZE_INTENSIVE, |
| 1874 | + INSIGHTS_POSIX_HIGH_SMALL_READ_REQUESTS_USAGE, |
| 1875 | + INSIGHTS_POSIX_HIGH_SMALL_WRITE_REQUESTS_USAGE, |
| 1876 | + INSIGHTS_POSIX_HIGH_MISALIGNED_MEMORY_USAGE, |
| 1877 | + INSIGHTS_POSIX_HIGH_MISALIGNED_FILE_USAGE, |
| 1878 | + INSIGHTS_POSIX_REDUNDANT_READ_USAGE, |
| 1879 | + INSIGHTS_POSIX_REDUNDANT_WRITE_USAGE, |
| 1880 | + INSIGHTS_POSIX_HIGH_RANDOM_READ_USAGE, |
| 1881 | + INSIGHTS_POSIX_HIGH_SEQUENTIAL_READ_USAGE, |
| 1882 | + INSIGHTS_POSIX_HIGH_RANDOM_WRITE_USAGE, |
| 1883 | + INSIGHTS_POSIX_HIGH_SEQUENTIAL_WRITE_USAGE, |
| 1884 | + INSIGHTS_POSIX_HIGH_SMALL_READ_REQUESTS_SHARED_FILE_USAGE, |
| 1885 | + INSIGHTS_POSIX_HIGH_SMALL_WRITE_REQUESTS_SHARED_FILE_USAGE, |
| 1886 | + INSIGHTS_POSIX_HIGH_METADATA_TIME, |
| 1887 | + INSIGHTS_POSIX_SIZE_IMBALANCE, |
| 1888 | + INSIGHTS_POSIX_TIME_IMBALANCE, |
| 1889 | + INSIGHTS_POSIX_INDIVIDUAL_WRITE_SIZE_IMBALANCE, |
| 1890 | + INSIGHTS_POSIX_INDIVIDUAL_READ_SIZE_IMBALANCE, |
| 1891 | + INSIGHTS_MPI_IO_NO_USAGE, |
| 1892 | + INSIGHTS_MPI_IO_NO_COLLECTIVE_READ_USAGE, |
| 1893 | + INSIGHTS_MPI_IO_NO_COLLECTIVE_WRITE_USAGE, |
| 1894 | + INSIGHTS_MPI_IO_COLLECTIVE_READ_USAGE, |
| 1895 | + INSIGHTS_MPI_IO_COLLECTIVE_WRITE_USAGE, |
| 1896 | + INSIGHTS_MPI_IO_BLOCKING_READ_USAGE, |
| 1897 | + INSIGHTS_MPI_IO_BLOCKING_WRITE_USAGE, |
| 1898 | + INSIGHTS_MPI_IO_AGGREGATORS_INTRA, |
| 1899 | + INSIGHTS_MPI_IO_AGGREGATORS_INTER, |
| 1900 | + INSIGHTS_MPI_IO_AGGREGATORS_OK |
| 1901 | + ] |
| 1902 | + if codes: |
| 1903 | + issues.extend(codes) |
| 1904 | + |
| 1905 | + detected_issues = dict.fromkeys(issues, False) |
| 1906 | + detected_issues['JOB'] = jobid |
| 1907 | + |
| 1908 | + for report in csv_report: |
| 1909 | + detected_issues[report] = True |
| 1910 | + |
| 1911 | + # ensure dir exists |
| 1912 | + os.makedirs(export_dir, exist_ok=True) |
| 1913 | + filepath = os.path.join(export_dir, f"{filename}.csv") |
| 1914 | + |
| 1915 | + print(f"DEBUG: export_dir: {export_dir}") |
| 1916 | + print(f"DEBUG: filename: {filename}") |
| 1917 | + print(f"DEBUG: filepath: {filepath}") |
| 1918 | + |
| 1919 | + with open(filepath, 'w') as f: |
| 1920 | + w = csv.writer(f) |
| 1921 | + w.writerow(detected_issues.keys()) |
| 1922 | + w.writerow(detected_issues.values()) |
1898 | 1923 |
|
0 commit comments