├── .gitignore ├── COPYING.kiinfo ├── COPYING.liki ├── COPYING.linuxki ├── Dockerfile ├── GPL ├── README.md ├── bash_completion.d └── kiinfo ├── cluster ├── cluster_collect ├── cluster_diskspace ├── cluster_install ├── cluster_remove ├── node_collect ├── node_install └── node_remove ├── config ├── config ├── config.cmu └── config.pdsh ├── documentation ├── BarrierWritesOracleASM.htm ├── LinuxKI_FAQ.pdf ├── LinuxKI_MasterClass.pdf ├── LinuxKI_QuickRefGuide.pdf ├── OracleLGWRwithXFS.htm ├── SAPDB2semget.htm ├── SemaphoreScaling.htm ├── TaskletIRQs.htm ├── UnterminatedIxgbe.htm ├── XfsDirectIOReadPerf.htm ├── add_random.htm ├── cache_bypass.htm ├── clocksource.htm ├── cpu_polling.htm ├── hugetlb_fault.htm ├── kstat_irqs.htm ├── kvm_pagefaults.htm ├── large_numa_node.htm ├── md_flush.htm ├── memblock_alloc.htm ├── multipath_bug.htm ├── numa_balancing.htm ├── numa_off.htm ├── oracle_colstats.htm ├── oracle_polling.htm ├── pcc_cpufreq.htm ├── power_vs_perf.htm ├── runq_delays.htm ├── sca_vuln.htm ├── sk_busy_loop.htm ├── sql_stats.htm ├── systemd_user.htm └── tcp_timeouts.htm ├── experimental ├── D3 │ ├── d3.js │ ├── d3.min.js │ ├── d3.v2.js │ ├── d3.v2.min.js │ ├── d3.v3.js │ ├── d3.v3.min.js │ └── lib │ │ ├── colorbrewer │ │ ├── LICENSE │ │ ├── colorbrewer.css │ │ └── colorbrewer.js │ │ ├── d3 │ │ ├── .gitignore │ │ ├── .gitmodules │ │ ├── .npmignore │ │ ├── .travis.yml │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── README.md │ │ ├── bin │ │ │ ├── component │ │ │ ├── locale │ │ │ ├── start │ │ │ └── uglify │ │ ├── component.json │ │ ├── d3.js │ │ ├── d3.min.js │ │ ├── globals.js │ │ ├── index-browserify.js │ │ ├── index.js │ │ └── package.json │ │ ├── divgrid.js │ │ ├── firebugx.js │ │ ├── jit │ │ └── LICENSE │ │ ├── jquery-1.11.2.js │ │ ├── jquery-1.7.min.js │ │ ├── jquery-ui-1.8.16.custom.min.js │ │ ├── jquery.event.drag-2.2.js │ │ ├── jquery.event.drop-2.2.js │ │ ├── jquery.jsonp-2.4.min.js │ │ ├── jquery.simulate.js │ │ ├── jquery.sparkline.min.js │ │ ├── mapper.js │ │ ├── parcoord │ │ ├── d3.parcoords.css │ │ ├── d3.parcoords.js │ │ └── style.css │ │ ├── penner │ │ └── LICENSE │ │ ├── polymaps │ │ └── LICENSE │ │ ├── protovis │ │ └── LICENSE │ │ ├── qunit.css │ │ ├── qunit.js │ │ ├── science │ │ ├── LICENSE │ │ ├── science.js │ │ ├── science.lin.js │ │ ├── science.lin.min.js │ │ ├── science.min.js │ │ ├── science.stats.js │ │ └── science.stats.min.js │ │ ├── slickgrid │ │ ├── .gitignore │ │ ├── MIT-LICENSE.txt │ │ ├── README.md │ │ ├── controls │ │ │ ├── slick.columnpicker.css │ │ │ ├── slick.columnpicker.js │ │ │ ├── slick.pager.css │ │ │ └── slick.pager.js │ │ ├── css │ │ │ └── smoothness │ │ │ │ ├── images │ │ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ │ │ ├── ui-bg_highlight-soft_75_cccccc_1x100.png │ │ │ │ ├── ui-icons_222222_256x240.png │ │ │ │ ├── ui-icons_2e83ff_256x240.png │ │ │ │ ├── ui-icons_454545_256x240.png │ │ │ │ ├── ui-icons_888888_256x240.png │ │ │ │ └── ui-icons_cd0a0a_256x240.png │ │ │ │ └── jquery-ui-1.8.16.custom.css │ │ ├── examples │ │ │ ├── example-autotooltips.html │ │ │ ├── example-checkbox-row-select.html │ │ │ ├── example-colspan.html │ │ │ ├── example-composite-editor-item-details.html │ │ │ ├── example-custom-column-value-extractor.html │ │ │ ├── example-explicit-initialization.html │ │ │ ├── example-grouping.html │ │ │ ├── example-header-row.html │ │ │ ├── example-multi-column-sort.html │ │ │ ├── example-optimizing-dataview.html │ │ │ ├── example-plugin-headerbuttons.html │ │ │ ├── example-plugin-headermenu.html │ │ │ ├── example-spreadsheet.html │ │ │ ├── example-totals-via-data-provider.html │ │ │ ├── example1-simple.html │ │ │ ├── example10-async-post-render.html │ │ │ ├── example11-autoheight.html │ │ │ ├── example12-fillbrowser.html │ │ │ ├── example13-getItem-sorting.html │ │ │ ├── example14-highlighting.html │ │ │ ├── example2-formatters.html │ │ │ ├── example3-editing.html │ │ │ ├── example3a-compound-editors.html │ │ │ ├── example3b-editing-with-undo.html │ │ │ ├── example4-model.html │ │ │ ├── example5-collapsing.html │ │ │ ├── example6-ajax-loading.html │ │ │ ├── example7-events.html │ │ │ ├── example8-alternative-display.html │ │ │ ├── example9-row-reordering.html │ │ │ ├── examples.css │ │ │ ├── index.html │ │ │ ├── slick-default-theme.css │ │ │ └── slick.compositeeditor.js │ │ ├── images │ │ │ ├── actions.gif │ │ │ ├── ajax-loader-small.gif │ │ │ ├── arrow_redo.png │ │ │ ├── arrow_right_peppermint.png │ │ │ ├── arrow_right_spearmint.png │ │ │ ├── arrow_undo.png │ │ │ ├── bullet_blue.png │ │ │ ├── bullet_star.png │ │ │ ├── bullet_toggle_minus.png │ │ │ ├── bullet_toggle_plus.png │ │ │ ├── calendar.gif │ │ │ ├── collapse.gif │ │ │ ├── comment_yellow.gif │ │ │ ├── down.gif │ │ │ ├── drag-handle.png │ │ │ ├── editor-helper-bg.gif │ │ │ ├── expand.gif │ │ │ ├── header-bg.gif │ │ │ ├── header-columns-bg.gif │ │ │ ├── header-columns-over-bg.gif │ │ │ ├── help.png │ │ │ ├── info.gif │ │ │ ├── listview.gif │ │ │ ├── pencil.gif │ │ │ ├── row-over-bg.gif │ │ │ ├── sort-asc.gif │ │ │ ├── sort-asc.png │ │ │ ├── sort-desc.gif │ │ │ ├── sort-desc.png │ │ │ ├── stripes.png │ │ │ ├── tag_red.png │ │ │ ├── tick.png │ │ │ ├── user_identity.gif │ │ │ └── user_identity_plus.gif │ │ ├── lib │ │ │ ├── firebugx.js │ │ │ ├── jquery-1.7.min.js │ │ │ ├── jquery-ui-1.8.16.custom.min.js │ │ │ ├── jquery.event.drag-2.2.js │ │ │ ├── jquery.event.drop-2.2.js │ │ │ ├── jquery.jsonp-2.4.min.js │ │ │ ├── jquery.simulate.js │ │ │ ├── jquery.sparkline.min.js │ │ │ ├── qunit.css │ │ │ └── qunit.js │ │ ├── plugins │ │ │ ├── slick.autotooltips.js │ │ │ ├── slick.cellcopymanager.js │ │ │ ├── slick.cellrangedecorator.js │ │ │ ├── slick.cellrangeselector.js │ │ │ ├── slick.cellselectionmodel.js │ │ │ ├── slick.checkboxselectcolumn.js │ │ │ ├── slick.headerbuttons.css │ │ │ ├── slick.headerbuttons.js │ │ │ ├── slick.headermenu.css │ │ │ ├── slick.headermenu.js │ │ │ ├── slick.rowmovemanager.js │ │ │ └── slick.rowselectionmodel.js │ │ ├── slick.core.js │ │ ├── slick.dataview.js │ │ ├── slick.editors.js │ │ ├── slick.formatters.js │ │ ├── slick.grid.css │ │ ├── slick.grid.js │ │ ├── slick.groupitemmetadataprovider.js │ │ ├── slick.remotemodel.js │ │ └── tests │ │ │ ├── dataview │ │ │ ├── dataview.js │ │ │ └── index.html │ │ │ ├── grid │ │ │ ├── grid.js │ │ │ └── index.html │ │ │ ├── index.html │ │ │ ├── model benchmarks.html │ │ │ ├── plugins │ │ │ ├── autotooltips.html │ │ │ └── autotooltips.js │ │ │ └── scrolling benchmarks.html │ │ └── underscore-min.js ├── exp └── vis │ ├── cluster_network.html │ ├── cluster_timeline.html │ ├── d3_csv.sh │ ├── futex_2_csv.sh │ ├── futex_cpu_scatter.html │ ├── futex_scatter.html │ ├── kiall.pk │ ├── kidsk.html │ ├── kidsk_2_csv.sh │ ├── kidsk_scatter.html │ ├── kidsk_trace_view.php │ ├── kifile.html │ ├── kipid_awk_csv.sh │ ├── kipid_io.html │ ├── kipid_sched.html │ ├── kirunq.html │ ├── kitrc_extract.sh │ ├── kivis.php │ ├── kiwait.html │ ├── network.html │ ├── network3.html │ ├── pid_detail.html │ ├── pid_switch.awkpgm │ ├── pid_switch.html │ ├── pid_switch.sh │ ├── pid_switch.sh.save │ ├── pid_switch_msr.awkpgm │ ├── pid_switch_steal.awkpgm │ ├── pid_switch_steal_msr.awkpgm │ ├── pid_timeline.html │ ├── pid_wtree.html │ ├── sample_network.csv │ ├── server_network.html │ ├── server_timeline.html │ ├── socket.html │ ├── timeline.html │ └── timeline.php ├── images ├── linuxKI.jpg ├── linuxKI_lg.jpg ├── linuxKI_med.jpg ├── linuxKI_sm.jpg ├── linuxKI_square.jpg ├── linuxKI_square_lg.jpg ├── linuxKI_square_med.jpg ├── linuxKI_square_sm.jpg ├── linuxKI_wide.jpg ├── linuxKI_wide_lg.jpg ├── linuxKI_wide_med.jpg ├── linuxKI_wide_sm.jpg ├── winki_logo.jpg └── winki_wide.jpg ├── man ├── man1 │ ├── kiall.1 │ ├── kiclean.1 │ ├── kiinfo-clparse.1 │ ├── kiinfo-dump.1 │ ├── kiinfo-kiall.1 │ ├── kiinfo-kidock.1 │ ├── kiinfo-kidsk.1 │ ├── kiinfo-kifile.1 │ ├── kiinfo-kifutex.1 │ ├── kiinfo-kipid.1 │ ├── kiinfo-kiprof.1 │ ├── kiinfo-kirunq.1 │ ├── kiinfo-kisock.1 │ ├── kiinfo-kitrace.1 │ ├── kiinfo-kiwait.1 │ ├── kiinfo-kparse.1 │ ├── kiinfo-likidump.1 │ ├── kiinfo-likimerge.1 │ ├── kiinfo-live.1 │ ├── kiinfo.1 │ ├── kivis-build.1 │ ├── kivis-start.1 │ ├── kivis-stop.1 │ └── runki.1 └── man7 │ └── linuxki.7 ├── ppc64le ├── kiinfo-rhel7_8.ppc64le ├── kiinfo-rhel8.ppc64le ├── kiinfo-sles15.ppc64le └── kiinfo-ubuntu18.ppc64le ├── rpms ├── linuxki-7.11-1.noarch.rpm └── linuxki_7.11-1_all.deb ├── scripts ├── kiall ├── kiclean ├── kivis-build ├── kivis-start ├── kivis-stop ├── linuxki.sh ├── linuxki_install ├── linuxki_remove ├── module_prep └── runki ├── src ├── kiinfo │ ├── DiskIo.c │ ├── DiskIo.h │ ├── FileIo.c │ ├── FileIo.h │ ├── Image.c │ ├── Image.h │ ├── Makefile │ ├── NetIp.c │ ├── NetIp.h │ ├── Pdb.c │ ├── Pdb.h │ ├── PerfInfo.c │ ├── PerfInfo.h │ ├── Process.c │ ├── Process.h │ ├── Provider.c │ ├── Provider.h │ ├── SysConfig.c │ ├── SysConfig.h │ ├── Thread.c │ ├── Thread.h │ ├── block.c │ ├── block.h │ ├── cache.c │ ├── cache.h │ ├── clear.c │ ├── clmsgcat.h │ ├── clparse.c │ ├── clprint.c │ ├── clprint.h │ ├── conv.c │ ├── conv.h │ ├── custom_options.h │ ├── developers.c │ ├── developers.h │ ├── docker.c │ ├── dsk.c │ ├── elf.c │ ├── file.c │ ├── firstpass.c │ ├── futex.c │ ├── futex.h │ ├── globals.c │ ├── globals.h │ ├── hardclock.c │ ├── hardclock.h │ ├── hash.c │ ├── hash.h │ ├── hash2.c │ ├── html.c │ ├── html.h │ ├── info.c │ ├── info.h │ ├── irq.c │ ├── irq.h │ ├── json.h │ ├── kd_types.h │ ├── ki_tool.h │ ├── kiall.c │ ├── kiinfo-rhel6.aarch64 │ ├── kiinfo-rhel7_8.ppc64le │ ├── kiinfo-rhel8.ppc64le │ ├── kiinfo-sles15.ppc64le │ ├── kiinfo-ubuntu18.ppc64le │ ├── kiinfo.c │ ├── kiinfo.rhel6 │ ├── kparse.c │ ├── kpmsgcat.h │ ├── kprint.c │ ├── kprint.h │ ├── liki.h │ ├── liki_extra.h │ ├── liki_v1.h │ ├── liki_v2.h │ ├── liki_v3.h │ ├── likid.c │ ├── likiif.c │ ├── likim.c │ ├── likis.c │ ├── live.c │ ├── live.h │ ├── msgcat.h │ ├── option.c │ ├── option_iface.h │ ├── option_private.h │ ├── oracle.c │ ├── oracle.h │ ├── parse.c │ ├── pid.c │ ├── power.c │ ├── power.h │ ├── prof.c │ ├── read_etl.c │ ├── read_tr.c │ ├── rrt.c │ ├── runq.c │ ├── sched.c │ ├── sched.h │ ├── scsi.c │ ├── scsi.h │ ├── socket.c │ ├── sort.c │ ├── sort.h │ ├── syscalls.c │ ├── syscalls.h │ ├── trace.c │ ├── util.c │ ├── vers.h │ ├── vis.c │ ├── vis.h │ ├── wait.c │ ├── winki.h │ ├── winki_util.c │ ├── winki_util.h │ ├── workqueue.c │ └── workqueue.h └── liki │ ├── Makefile │ ├── liki.h │ └── likit.c └── winki ├── GetSQLServerInfo.ps1 ├── convertpdb.cmd ├── ntstatus.txt ├── pdbdump.exe ├── runki.cmd ├── spin.sql └── waits.sql /.gitignore: -------------------------------------------------------------------------------- 1 | archive 2 | *.tgz 3 | modules 4 | aarch64 5 | experimental 6 | src/kiinfo.win 7 | src/kiinfo/kiinfo.aarch64 8 | src/kiinfo/kiinfo.rhel8 9 | src/kiinfo/kiinfo.sles15 10 | src/kiinfo/kiinfo.x86_64 11 | src/winki 12 | src/winki.beta 13 | .gitignore 14 | -------------------------------------------------------------------------------- /COPYING.kiinfo: -------------------------------------------------------------------------------- 1 | Copyright (C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP. 2 | Copyright (C) Copyright 2000-2014 Hewlett-Packard Development Company, L.P. 3 | 4 | This program (kiinfo) is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License, version 2, as published 6 | by the Free Software Foundation. 7 | 8 | This program is distributed in the hope that it will be useful, but WITHOUT ANY 9 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 10 | PARTICULAR PURPOSE. See the GNU General Public License for more details. 11 | 12 | You should have received a copy of the GNU General Public License along with 13 | this program. If not, see . 14 | -------------------------------------------------------------------------------- /COPYING.liki: -------------------------------------------------------------------------------- 1 | (C) Copyright 2015 Hewlett Packard Enterprise Development LP. 2 | (C) Copyright 2000-2014 Hewlett-Packard Development Company, L.P. 3 | 4 | This program (likit.ko) is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation; either version 2 of the License, or (at your 7 | option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, but WITHOUT 10 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12 | more details. 13 | 14 | You should have received a copy of the GNU General Public License along with 15 | this program; if not, write to the Free Software Foundation, Inc., 51 Franklin 16 | Street, Fifth Floor Boston, MA 02110-1301, USA. 17 | 18 | NOTE: This copyright does *not* cover user programs that interact with this 19 | module using its regular interfaces - this is merely considered normal use of 20 | the module, and does *not* fall under the heading of "derived work", nor are 21 | these user programs to be considered derivative works of the module. 22 | -------------------------------------------------------------------------------- /COPYING.linuxki: -------------------------------------------------------------------------------- 1 | Copyright (C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP. 2 | Copyright (C) Copyright 2000-2014 Hewlett-Packard Development Company, L.P. 3 | 4 | This toolset (kiinfo, likit.ko, and supporting scripts) is free software: 5 | you can redistribute it and/or modify it under the terms of the GNU General 6 | Public License, version 2, as published by the Free Software Foundation. 7 | 8 | This toolset is distributed in the hope that it will be useful, but WITHOUT ANY 9 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 10 | PARTICULAR PURPOSE. See the GNU General Public License for more details. 11 | 12 | You should have received a copy of the GNU General Public License along with 13 | this program. If not, see . 14 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # Licensed under GPL v2 or later 2 | # 3 | # See https://docs.docker.com/install/ for information on how to install Docker. 4 | # 5 | # After installing LinuxKI, build the container image: 6 | # docker build \ 7 | # --tag linuxki \ 8 | # --build-arg http_proxy=$http_proxy \ 9 | # --build-arg https_proxy=$https_proxy \ 10 | # --build-arg HTTP_PROXY=$HTTP_PROXY \ 11 | # --build-arg HTTPS_PROXY=$HTTPS_PROXY \ 12 | # /opt/linuxki 13 | # 14 | # When generating the LinuxKI reports with kiall, add the -V option to enable 15 | # visualisations in the reports when possible. 16 | # 17 | # After the LinuxKI reports have been generated, to see the results with the 18 | # visualizations, from the directory with the analysis results, run: 19 | # docker run \ 20 | # --detach \ 21 | # --name linuxki \ 22 | # --publish-all \ 23 | # --rm \ 24 | # --volume $PWD:/var/www/html/linuxki \ 25 | # linuxki 26 | # 27 | # port=$(docker inspect \ 28 | # --format='{{(index (index .NetworkSettings.Ports "80/tcp") 0).HostPort}}' \ 29 | # linuxki) 30 | # echo Server running on port $port 31 | # 32 | # html_file=$(find . -iname 'kp.*.html') 33 | # [[ $(echo $html_file | wc --words) -ne 1 ]] && unset html_file 34 | # xdg-open http://localhost:$port/linuxki/$html_file 35 | # 36 | # When finished looking at the results, run: 37 | # docker stop linuxki 38 | 39 | FROM centos:7 40 | LABEL maintainer="Christopher Voltz " 41 | 42 | RUN yum update -y 43 | RUN yum install -y yum-utils 44 | RUN yum install -y httpd mod_ssl 45 | RUN yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm && \ 46 | yum-config-manager --enable remi-php72 && \ 47 | yum install -y php php-opcache 48 | RUN yum install -y https://raw.githubusercontent.com/HewlettPackard/LinuxKI/master/rpms/linuxki-7.11-1.noarch.rpm 49 | RUN yum clean all -y && rm -rf /var/cache/yum 50 | 51 | RUN echo '' > /var/www/html/info.php 52 | 53 | EXPOSE 80 54 | EXPOSE 443 55 | 56 | CMD /usr/sbin/httpd -DFOREGROUND 57 | -------------------------------------------------------------------------------- /cluster/cluster_diskspace: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ##************************************************************************** 3 | # Copyright 2017 Hewlett Packard Enterprise Development LP. 4 | # This program is free software; you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation; either version 2 of the License, or (at 7 | # your option) any later version. This program is distributed in the 8 | # hope that it will be useful, but WITHOUT ANY WARRANTY; without even 9 | # the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 10 | # PURPOSE. See the GNU General Public License for more details. You 11 | # should have received a copy of the GNU General Public License along 12 | # with this program; if not, write to the Free Software Foundation, 13 | # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 14 | #*************************************************************************** 15 | 16 | if [ ! -f /opt/linuxki/config ]; then 17 | echo Linux KI Toolset config file /opt/linuxki/config not found. >&2 18 | echo Linux KI Toolset not properly installed... >&2 19 | exit 10 20 | fi 21 | 22 | . /opt/linuxki/config 23 | 24 | [ -z "$CMU_DATADIR" ] && echo "CMU_DATADIR not set in /opt/linuxki/config???" >&2 && exit 11 25 | [ -z "$NODE_STAGEDIR" ] && echo "NODE_STAGEDIR not set in /opt/linuxki/config???" >&2 && exit 12 26 | 27 | # 28 | # setup 29 | # 30 | [ -z "$WCOLL" ] && echo "WCOLL (file containing list of target hosts) not set???" >&2 && exit 14 31 | export WCOLL 32 | 33 | # 34 | # Display diskspace 35 | # 36 | echo ------------------------------------------------------ 37 | echo CMU Head Node Data Repository $CMU_DATADIR: 38 | echo ------------------------------------------------------ 39 | 40 | df -Ha $CMU_DATADIR 41 | 42 | echo " " 43 | echo ------------------------------------------------------ 44 | echo Target Nodes Staging Area $NODE_STAGEDIR: 45 | echo ------------------------------------------------------ 46 | 47 | $PDSH -S df -Ha $NODE_STAGEDIR | grep -v Filesystem | sort | uniq 48 | -------------------------------------------------------------------------------- /cluster/cluster_install: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #************************************************************************** 3 | # Copyright 2017 Hewlett Packard Enterprise Development LP. 4 | # This program is free software; you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation; either version 2 of the License, or (at 7 | # your option) any later version. This program is distributed in the 8 | # hope that it will be useful, but WITHOUT ANY WARRANTY; without even 9 | # the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 10 | # PURPOSE. See the GNU General Public License for more details. You 11 | # should have received a copy of the GNU General Public License along 12 | # with this program; if not, write to the Free Software Foundation, 13 | # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 14 | #*************************************************************************** 15 | 16 | if [ ! -f /opt/linuxki/config ]; then 17 | echo Linux KI Toolset config file /opt/linuxki/config not found. >&2 18 | echo Linux KI Toolset not properly installed... >&2 19 | exit 10 20 | fi 21 | 22 | . /opt/linuxki/config 23 | 24 | [ -z "$CMU_DATADIR" ] && echo "CMU_DATADIR not set in config???" && exit 11 25 | 26 | # 27 | # setup 28 | # 29 | [ -z "$WCOLL" ] && echo "WCOLL (file containing list of target hosts) not set???" >&2 && exit 12 30 | export WCOLL 31 | TMPFILE=`mktemp` 32 | 33 | # 34 | # Copy preparation script to nodes 35 | # 36 | $PDCP -p /opt/linuxki/cluster/node_install /tmp/linuxki_node_install 2> $TMPFILE 37 | if [ $? -ne 0 ]; then 38 | echo " " >&2 39 | echo !!!Distribution of node installation script failed!!! >&2 40 | echo non-zero pdcp return code >&2 41 | cat $TMPFILE >&2 42 | rm -f $TMPFILE 43 | exit 14 44 | fi 45 | grep -q "exit code" $TMPFILE 46 | if [ $? -eq 0 ]; then 47 | echo " " >&2 48 | echo !!!Distribution of node installation script failed!!! >&2 49 | echo Most likely pdcp is not installed on target nodes. >&2 50 | cat $TMPFILE >&2 51 | rm -f $TMPFILE 52 | exit 15 53 | fi 54 | 55 | $PDCP -p /opt/linuxki/config /tmp/linuxki_config 2> $TMPFILE 56 | if [ $? -ne 0 ]; then 57 | echo " " >&2 58 | echo !!!Distribution of config script failed!!! >&2 59 | echo Could not copy the config file to target nodes. >&2 60 | echo non-zero pdcp return code >&2 61 | cat $TMPFILE >&2 62 | rm -f $TMPFILE 63 | exit 16 64 | fi 65 | grep -q "exit code" $TMPFILE 66 | if [ $? -eq 0 ]; then 67 | echo " " >&2 68 | echo !!!Distribution of config script failed!!! >&2 69 | echo Could not copy the config file to target nodes. >&2 70 | cat $TMPFILE >&2 71 | rm -f $TMPFILE 72 | exit 17 73 | fi 74 | 75 | 76 | # 77 | # run install script on nodes 78 | # 79 | $PDSH -S /tmp/linuxki_node_install 80 | 81 | rm -f $TMPFILE 82 | 83 | exit 0 84 | -------------------------------------------------------------------------------- /cluster/cluster_remove: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #************************************************************************** 3 | # Copyright 2017 Hewlett Packard Enterprise Development LP. 4 | # This program is free software; you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation; either version 2 of the License, or (at 7 | # your option) any later version. This program is distributed in the 8 | # hope that it will be useful, but WITHOUT ANY WARRANTY; without even 9 | # the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 10 | # PURPOSE. See the GNU General Public License for more details. You 11 | # should have received a copy of the GNU General Public License along 12 | # with this program; if not, write to the Free Software Foundation, 13 | # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 14 | #*************************************************************************** 15 | 16 | if [ ! -f /opt/linuxki/config ]; then 17 | echo " " >&2 18 | echo Linux KI Toolset config file /opt/linuxki/config not found. >&2 19 | echo Linux KI Toolset not properly installed... >&2 20 | exit 10 21 | fi 22 | 23 | . /opt/linuxki/config 24 | 25 | # 26 | # setup 27 | # 28 | [ -z "$WCOLL" ] && echo "WCOLL (file containing list of target hosts) not set???" >&2 && exit 11 29 | export WCOLL 30 | TMPFILE=`mktemp` 31 | 32 | # 33 | # copy remove script to nodes 34 | # 35 | $PDCP -p /opt/linuxki/cluster/node_remove /tmp/linuxki_node_remove 2> $TMPFILE 36 | if [ ! $? -eq 0 ]; then 37 | echo " " >&2 38 | echo !!!Distribution of node uninstall script failed!!! >&2 39 | echo non-zero pdcp return code >&2 40 | cat $TMPFILE >&2 41 | exit 12 42 | fi 43 | grep -q "exit code" $TMPFILE 44 | if [ $? -eq 0 ]; then 45 | echo " " >&2 46 | echo !!!Distribution of node uninstall script failed!!! >&2 47 | echo Most likely pdcp is not installed on the target nodes. >&2 48 | cat $TMPFILE >&2 49 | exit 14 50 | fi 51 | 52 | # 53 | # run remove script on nodes 54 | # 55 | $PDSH -S /tmp/linuxki_node_remove 56 | 57 | rm -f $TMPFILE 58 | 59 | exit 0 60 | -------------------------------------------------------------------------------- /cluster/node_remove: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #************************************************************************** 3 | # Copyright 2017 Hewlett Packard Enterprise Development LP. 4 | # This program is free software; you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation; either version 2 of the License, or (at 7 | # your option) any later version. This program is distributed in the 8 | # hope that it will be useful, but WITHOUT ANY WARRANTY; without even 9 | # the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 10 | # PURPOSE. See the GNU General Public License for more details. You 11 | # should have received a copy of the GNU General Public License along 12 | # with this program; if not, write to the Free Software Foundation, 13 | # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 14 | #*************************************************************************** 15 | 16 | CMU_HOST=`echo $SSH_CLIENT|awk '{print $1}'` 17 | CMU_CLIENT=`echo $SSH_CONNECTION|awk '{print $3}'` 18 | 19 | # if its a PDSH to the same CMU Host, then simply return 20 | # as there as there is nothing to install 21 | if [ $CMU_HOST == $CMU_CLIENT ]; then 22 | exit 0; 23 | fi 24 | 25 | date > /tmp/linuxki.last.run 26 | echo $0 >> /tmp/linuxki.last.run 27 | mount >> /tmp/linuxki.last.run 28 | 29 | echo --- Linux KI Toolset node uninstall starting... 30 | 31 | # Check for stale NFS mount point and remount if stale 32 | grep -q -e " /opt/linuxki " /etc/fstab 33 | if [ $? -eq 0 ]; then 34 | TMPFILE=`mktemp` 35 | ls /opt/linuxki/config > /dev/null 2> $TMPFILE 36 | grep -q Stale $TMPFILE && umount -f /opt/linuxki && mount /opt/linuxki 37 | rm -f $TMPFILE 38 | fi 39 | 40 | [ -f /opt/linuxki/config ] && . /opt/linuxki/config 41 | 42 | [ -z $CMU_DATADIR ] && CMU_DATADIR=/var/linuxki 43 | 44 | # 45 | # Remove NFS mounts from /etc/fstab 46 | # Its OK if one or more are not present 47 | # 48 | grep -q -e " /opt/linuxki " -e " $CMU_DATADIR " /etc/fstab 49 | if [ $? -eq 0 ]; then 50 | TMPFILE=`mktemp` 51 | grep -v -e " /opt/linuxki " -e " $CMU_DATADIR " -e "Linux KI" /etc/fstab > $TMPFILE 52 | mv $TMPFILE /etc/fstab 53 | chmod 644 /etc/fstab 54 | rm -f $TMPFILE 55 | fi 56 | 57 | # 58 | # if directories are NFS mounted, then unmount them 59 | # 60 | mount | grep " /opt/linuxki " | grep -q " nfs" 61 | if [ $? -eq 0 ]; then 62 | umount -f /opt/linuxki 63 | fi 64 | 65 | mount | grep " $CMU_DATADIR " | grep -q " nfs" 66 | if [ $? -eq 0 ]; then 67 | umount -f $CMU_DATADIR 68 | fi 69 | 70 | # 71 | # Remove module 72 | # 73 | modprobe -r -q likit 74 | rm -f /lib/modules/`uname -r`/misc/likit.ko 2>> /dev/null 75 | depmod 76 | 77 | rm -f /tmp/linuxki_node_remove 78 | 79 | date >> /tmp/linuxki.last.run 80 | echo --- Linux KI Toolset node uninstall complete! 81 | exit 0 82 | -------------------------------------------------------------------------------- /documentation/LinuxKI_FAQ.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/documentation/LinuxKI_FAQ.pdf -------------------------------------------------------------------------------- /documentation/LinuxKI_MasterClass.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/documentation/LinuxKI_MasterClass.pdf -------------------------------------------------------------------------------- /documentation/LinuxKI_QuickRefGuide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/documentation/LinuxKI_QuickRefGuide.pdf -------------------------------------------------------------------------------- /experimental/D3/lib/colorbrewer/LICENSE: -------------------------------------------------------------------------------- 1 | Apache-Style Software License for ColorBrewer software and ColorBrewer Color 2 | Schemes 3 | 4 | Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The Pennsylvania State 5 | University. 6 | 7 | Licensed under the Apache License, Version 2.0 (the "License"); you may not 8 | use this file except in compliance with the License. You may obtain a copy of 9 | the License at 10 | 11 | http://www.apache.org/licenses/LICENSE-2.0 12 | 13 | Unless required by applicable law or agreed to in writing, software 14 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 15 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 16 | License for the specific language governing permissions and limitations under 17 | the License. 18 | 19 | Redistribution and use in source and binary forms, with or without 20 | modification, are permitted provided that the following conditions are met: 21 | 22 | 1. Redistributions as source code must retain the above copyright notice, this 23 | list of conditions and the following disclaimer. 24 | 25 | 2. The end-user documentation included with the redistribution, if any, must 26 | include the following acknowledgment: "This product includes color 27 | specifications and designs developed by Cynthia Brewer 28 | (http://colorbrewer.org/)." Alternately, this acknowledgment may appear in the 29 | software itself, if and wherever such third-party acknowledgments normally 30 | appear. 31 | 32 | 4. The name "ColorBrewer" must not be used to endorse or promote products 33 | derived from this software without prior written permission. For written 34 | permission, please contact Cynthia Brewer at cbrewer@psu.edu. 35 | 36 | 5. Products derived from this software may not be called "ColorBrewer", nor 37 | may "ColorBrewer" appear in their name, without prior written permission of 38 | Cynthia Brewer. 39 | -------------------------------------------------------------------------------- /experimental/D3/lib/d3/.gitignore: -------------------------------------------------------------------------------- 1 | _site 2 | node_modules 3 | .DS_Store 4 | -------------------------------------------------------------------------------- /experimental/D3/lib/d3/.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/d3/.gitmodules -------------------------------------------------------------------------------- /experimental/D3/lib/d3/.npmignore: -------------------------------------------------------------------------------- 1 | examples/ 2 | test/ 3 | lib/ 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /experimental/D3/lib/d3/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 0.10 4 | -------------------------------------------------------------------------------- /experimental/D3/lib/d3/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013, Michael Bostock 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * The name Michael Bostock may not be used to endorse or promote products 15 | derived from this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20 | DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT, 21 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 24 | OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 25 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | -------------------------------------------------------------------------------- /experimental/D3/lib/d3/Makefile: -------------------------------------------------------------------------------- 1 | LOCALE ?= en_US 2 | 3 | GENERATED_FILES = \ 4 | d3.js \ 5 | d3.min.js \ 6 | component.json 7 | 8 | all: $(GENERATED_FILES) 9 | 10 | .PHONY: clean all test 11 | 12 | test: 13 | @npm test 14 | 15 | benchmark: all 16 | @node test/geo/benchmark.js 17 | 18 | src/format/format-localized.js: bin/locale src/format/format-locale.js 19 | LC_NUMERIC=$(LOCALE) locale -ck LC_NUMERIC | bin/locale src/format/format-locale.js > $@ 20 | 21 | src/time/format-localized.js: bin/locale src/time/format-locale.js 22 | LC_TIME=$(LOCALE) locale -ck LC_TIME | bin/locale src/time/format-locale.js > $@ 23 | 24 | src/start.js: package.json bin/start 25 | bin/start > $@ 26 | 27 | d3.js: $(shell node_modules/.bin/smash --list src/d3.js) package.json 28 | @rm -f $@ 29 | node_modules/.bin/smash src/d3.js | node_modules/.bin/uglifyjs - -b indent-level=2 -o $@ 30 | @chmod a-w $@ 31 | 32 | d3.min.js: d3.js 33 | @rm -f $@ 34 | bin/uglify $< > $@ 35 | 36 | component.json: bin/component d3.js package.json 37 | @rm -f $@ 38 | bin/component > $@ 39 | @chmod a-w $@ 40 | 41 | clean: 42 | rm -f -- $(GENERATED_FILES) 43 | -------------------------------------------------------------------------------- /experimental/D3/lib/d3/README.md: -------------------------------------------------------------------------------- 1 | # Data-Driven Documents 2 | 3 | **D3.js** is a JavaScript library for manipulating documents based on data. **D3** helps you bring data to life using HTML, SVG and CSS. D3’s emphasis on web standards gives you the full capabilities of modern browsers without tying yourself to a proprietary framework, combining powerful visualization components and a data-driven approach to DOM manipulation. 4 | 5 | Want to learn more? [See the wiki.](https://github.com/mbostock/d3/wiki) 6 | 7 | For examples, [see the gallery](https://github.com/mbostock/d3/wiki/Gallery) and [mbostock’s bl.ocks](http://bl.ocks.org/mbostock). 8 | -------------------------------------------------------------------------------- /experimental/D3/lib/d3/bin/component: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | console.log(JSON.stringify({ 4 | "name": "d3", 5 | "version": require("../package.json").version, 6 | "main": "index-browserify.js", 7 | "scripts": ["index-browserify.js", "d3.js"] 8 | }, null, 2)); 9 | -------------------------------------------------------------------------------- /experimental/D3/lib/d3/bin/locale: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var fs = require("fs"), 4 | puts = require("util").puts, 5 | formats = {}, 6 | kvRe = /=/, 7 | valueRe = /;/g, 8 | quotedRe = /"([^"]*?)"/g, 9 | data = []; 10 | 11 | process.stdin.resume(); 12 | process.stdin.setEncoding("utf8"); 13 | process.stdin.on("data", function(chunk) { data.push(chunk); }); 14 | process.stdin.on("end", write); 15 | 16 | function write() { 17 | data.join("\n").split(/\n/g).forEach(function(line) { 18 | var i = line.match(kvRe); 19 | if (i && (i = i.index)) { 20 | var value = line.substring(i + 1).replace(quotedRe, "$1").split(valueRe); 21 | formats[line.substring(0, i)] = value; 22 | } 23 | }); 24 | 25 | puts(fs.readFileSync(process.argv[2], "utf8").replace(/\{([^\}]+)\}/g, function(d, k) { 26 | d = formats[k]; 27 | return k === "grouping" 28 | ? d === "127" || d === "0" ? null : "[" + d.map(Number).join(", ") + "]" 29 | : d == null ? null : d.length > 1 ? "[" + d.map(quote).join(", ") + "]" : quote(d[0]); 30 | })); 31 | } 32 | 33 | function quote(d) { return '"' + d + '"'; } 34 | -------------------------------------------------------------------------------- /experimental/D3/lib/d3/bin/start: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | console.log("d3 = (function(){\n var d3 = {version: " + JSON.stringify(require("../package.json").version) + "}; // semver"); 4 | -------------------------------------------------------------------------------- /experimental/D3/lib/d3/bin/uglify: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var fs = require("fs"), 4 | uglify = require("uglify-js"); 5 | 6 | var filename = process.argv[2], 7 | toplevel = uglify.parse(fs.readFileSync(filename, "utf8"), {filename: filename}), 8 | output = uglify.OutputStream(), 9 | compressor = uglify.Compressor(true), 10 | warn = uglify.AST_Node.warn; 11 | 12 | uglify.AST_Node.warn = function(s, o) { 13 | if (o.msg === "Accidental global?" && o.name === "d3" && o.line === 1 && !o.col) return; 14 | warn.apply(this, arguments); 15 | }; 16 | 17 | toplevel.figure_out_scope(); 18 | toplevel.scope_warnings({ 19 | undeclared: false, 20 | unreferenced: false, 21 | assign_to_global: true, 22 | func_arguments: false, 23 | nested_defuns: false, 24 | eval: false 25 | }); 26 | 27 | toplevel = toplevel.transform(compressor); 28 | 29 | toplevel.figure_out_scope(); 30 | toplevel.compute_char_frequency(true); 31 | toplevel.mangle_names(true); 32 | toplevel.print(output); 33 | 34 | require("util").print(output.get()); 35 | -------------------------------------------------------------------------------- /experimental/D3/lib/d3/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "d3", 3 | "version": "3.1.10", 4 | "main": "index-browserify.js", 5 | "scripts": [ 6 | "index-browserify.js", 7 | "d3.js" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /experimental/D3/lib/d3/globals.js: -------------------------------------------------------------------------------- 1 | var document = global.document = require("jsdom").jsdom(""), 2 | window = global.window = document.createWindow(); 3 | 4 | // https://github.com/chad3814/CSSStyleDeclaration/issues/3 5 | var CSSStyleDeclaration_prototype = window.CSSStyleDeclaration.prototype, 6 | CSSStyleDeclaration_setProperty = CSSStyleDeclaration_prototype.setProperty; 7 | CSSStyleDeclaration_prototype.setProperty = function(name, value, priority) { 8 | return CSSStyleDeclaration_setProperty.call(this, name + "", value == null ? null : value + "", priority == null ? null : priority + ""); 9 | }; 10 | -------------------------------------------------------------------------------- /experimental/D3/lib/d3/index-browserify.js: -------------------------------------------------------------------------------- 1 | require("./d3"); 2 | module.exports = d3; 3 | (function () { delete this.d3; })(); // unset global 4 | -------------------------------------------------------------------------------- /experimental/D3/lib/d3/index.js: -------------------------------------------------------------------------------- 1 | var globals = ["document", "window", "d3"], 2 | globalValues = {}; 3 | 4 | globals.forEach(function(g) { 5 | if (g in global) globalValues[g] = global[g]; 6 | }); 7 | 8 | require("./globals"); 9 | require("./d3"); 10 | 11 | module.exports = d3; 12 | 13 | globals.forEach(function(g) { 14 | if (g in globalValues) global[g] = globalValues[g]; 15 | else delete global[g]; 16 | }); 17 | -------------------------------------------------------------------------------- /experimental/D3/lib/d3/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "d3", 3 | "version": "3.1.10", 4 | "description": "A small, free JavaScript library for manipulating documents based on data.", 5 | "keywords": [ 6 | "dom", 7 | "w3c", 8 | "visualization", 9 | "svg", 10 | "animation", 11 | "canvas" 12 | ], 13 | "homepage": "http://d3js.org", 14 | "author": { 15 | "name": "Mike Bostock", 16 | "url": "http://bost.ocks.org/mike" 17 | }, 18 | "contributors": [ 19 | { 20 | "name": "Jason Davies", 21 | "url": "http://jasondavies.com" 22 | } 23 | ], 24 | "repository": { 25 | "type": "git", 26 | "url": "https://github.com/mbostock/d3.git" 27 | }, 28 | "main": "index.js", 29 | "browserify": "index-browserify.js", 30 | "jam": { 31 | "main": "d3.js", 32 | "shim": { 33 | "exports": "d3" 34 | } 35 | }, 36 | "dependencies": { 37 | "jsdom": "~0.5.3" 38 | }, 39 | "devDependencies": { 40 | "smash": "~0.0.8", 41 | "uglify-js": "git://github.com/mishoo/UglifyJS2.git#3bd7ca9961125b39dcd54d2182cb72bd1ca6006e", 42 | "vows": "0.7.x" 43 | }, 44 | "scripts": { 45 | "test": "node_modules/.bin/vows" 46 | }, 47 | "licenses": [ 48 | { 49 | "type": "BSD", 50 | "url": "https://github.com/mbostock/d3/blob/master/LICENSE" 51 | } 52 | ] 53 | } 54 | -------------------------------------------------------------------------------- /experimental/D3/lib/divgrid.js: -------------------------------------------------------------------------------- 1 | // http://bl.ocks.org/3687826 2 | d3.divgrid = function(config) { 3 | var columns = []; 4 | 5 | var dg = function(selection) { 6 | if (columns.length == 0) columns = d3.keys(selection.data()[0][0]); 7 | 8 | // header 9 | selection.selectAll(".header") 10 | .data([true]) 11 | .enter().append("div") 12 | .attr("class", "header"); 13 | 14 | var header = selection.select(".header") 15 | .selectAll(".cell") 16 | .data(columns); 17 | 18 | header.enter().append("div") 19 | .attr("class", function(d,i) { return "col-" + i; }) 20 | .classed("cell", true); 21 | 22 | selection.selectAll(".header .cell") 23 | .text(function(d) { return d; }); 24 | 25 | header.exit().remove(); 26 | 27 | // rows 28 | var rows = selection.selectAll(".row") 29 | .data(function(d) { return d; }) 30 | 31 | rows.enter().append("div") 32 | .attr("class", "row") 33 | 34 | rows.exit().remove(); 35 | 36 | var cells = selection.selectAll(".row").selectAll(".cell") 37 | .data(function(d) { return columns.map(function(col){return d[col];}) }) 38 | 39 | // cells 40 | cells.enter().append("div") 41 | .attr("class", function(d,i) { return "col-" + i; }) 42 | .classed("cell", true) 43 | 44 | cells.exit().remove(); 45 | 46 | selection.selectAll(".cell") 47 | .text(function(d) { return d; }); 48 | 49 | return dg; 50 | }; 51 | 52 | dg.columns = function(_) { 53 | if (!arguments.length) return columns; 54 | columns = _; 55 | return this; 56 | }; 57 | 58 | return dg; 59 | }; 60 | -------------------------------------------------------------------------------- /experimental/D3/lib/firebugx.js: -------------------------------------------------------------------------------- 1 | if (typeof console === "undefined" || typeof console.log === "undefined") { 2 | var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", 3 | "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; 4 | 5 | window.console = {}; 6 | for (var i = 0; i < names.length; ++i) { 7 | window.console[names[i]] = function() {} 8 | } 9 | } -------------------------------------------------------------------------------- /experimental/D3/lib/jit/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010, Nicolas Garcia Belmonte 2 | All rights reserved 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * Neither the name of the organization nor the names of its contributors may 15 | be used to endorse or promote products derived from this software without 16 | specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY NICOLAS GARCIA BELMONTE ``AS IS'' AND ANY EXPRESS 19 | OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 20 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 21 | EVENT SHALL NICOLAS GARCIA BELMONTE BE LIABLE FOR ANY DIRECT, INDIRECT, 22 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 24 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 25 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 26 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 27 | EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /experimental/D3/lib/jquery.jsonp-2.4.min.js: -------------------------------------------------------------------------------- 1 | // jquery.jsonp 2.4.0 (c)2012 Julian Aubourg | MIT License 2 | // https://github.com/jaubourg/jquery-jsonp 3 | (function(e){function t(){}function n(e){C=[e]}function r(e,t,n){return e&&e.apply&&e.apply(t.context||t,n)}function i(e){return/\?/.test(e)?"&":"?"}function O(c){function Y(e){z++||(W(),j&&(T[I]={s:[e]}),D&&(e=D.apply(c,[e])),r(O,c,[e,b,c]),r(_,c,[c,b]))}function Z(e){z++||(W(),j&&e!=w&&(T[I]=e),r(M,c,[c,e]),r(_,c,[c,e]))}c=e.extend({},k,c);var O=c.success,M=c.error,_=c.complete,D=c.dataFilter,P=c.callbackParameter,H=c.callback,B=c.cache,j=c.pageCache,F=c.charset,I=c.url,q=c.data,R=c.timeout,U,z=0,W=t,X,V,J,K,Q,G;return S&&S(function(e){e.done(O).fail(M),O=e.resolve,M=e.reject}).promise(c),c.abort=function(){!(z++)&&W()},r(c.beforeSend,c,[c])===!1||z?c:(I=I||u,q=q?typeof q=="string"?q:e.param(q,c.traditional):u,I+=q?i(I)+q:u,P&&(I+=i(I)+encodeURIComponent(P)+"=?"),!B&&!j&&(I+=i(I)+"_"+(new Date).getTime()+"="),I=I.replace(/=\?(&|$)/,"="+H+"$1"),j&&(U=T[I])?U.s?Y(U.s[0]):Z(U):(E[H]=n,K=e(y)[0],K.id=l+N++,F&&(K[o]=F),L&&L.version()<11.6?(Q=e(y)[0]).text="document.getElementById('"+K.id+"')."+p+"()":K[s]=s,A&&(K.htmlFor=K.id,K.event=h),K[d]=K[p]=K[v]=function(e){if(!K[m]||!/i/.test(K[m])){try{K[h]&&K[h]()}catch(t){}e=C,C=0,e?Y(e[0]):Z(a)}},K.src=I,W=function(e){G&&clearTimeout(G),K[v]=K[d]=K[p]=null,x[g](K),Q&&x[g](Q)},x[f](K,J=x.firstChild),Q&&x[f](Q,J),G=R>0&&setTimeout(function(){Z(w)},R)),c)}var s="async",o="charset",u="",a="error",f="insertBefore",l="_jqjsp",c="on",h=c+"click",p=c+a,d=c+"load",v=c+"readystatechange",m="readyState",g="removeChild",y=" 32 | 33 | 34 | 35 | 36 | 37 | 38 | 72 | 73 | -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/examples/example-colspan.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 14 | 20 | 21 |
12 |
13 |
15 |

Demonstrates:

16 |
    17 |
  • column span
  • 18 |
19 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/examples/example-custom-column-value-extractor.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SlickGrid example: Custom column value extractor 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 16 | 22 | 23 |
14 |
15 |
17 |

Demonstrates:

18 |
    19 |
  • using dataItemColumnValueExtractor option to specify a custom column value extractor
  • 20 |
21 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/examples/example-explicit-initialization.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SlickGrid example: Explicit grid initialization 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 15 | 29 | 30 |
14 | 16 |

Demonstrates:

17 |

18 | The container which the grid is being created in needs to be in the DOM and participate in layout 19 | (can be 'visibility:hidden' but not 'display:none') in order for SlickGrid to be able to make certain 20 | measurements and initialize event listeners. Normally, this is done when a SlickGrid instance is 21 | being created. Optionally, you can defer the initialization until the above condition is met and call 22 | the grid.init() method explicitly. To use explicit initialization, set the explicitInitialization 23 | option to true. 24 |

25 | This example demonstrates creating a SlickGrid inside a detached element and calling init() explicitly 26 | when the element is added to the DOM. 27 |

28 |
31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/examples/example1-simple.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SlickGrid example 1: Basic grid 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 16 | 22 | 23 |
14 |
15 |
17 |

Demonstrates:

18 |
    19 |
  • basic grid with minimal configuration
  • 20 |
21 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/examples/example11-autoheight.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | SlickGrid example 11: No vertical scrolling (autoHeight) 7 | 8 | 9 | 34 | 35 | 36 |
37 |
38 |

Demonstrates:

39 |
    40 |
  • autoHeight:true grid option
  • 41 |
42 |
43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 82 | 83 | -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/examples/example2-formatters.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SlickGrid example 2: Formatters 6 | 7 | 8 | 9 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 28 | 35 | 36 |
26 |
27 |
29 |

Demonstrates:

30 |
    31 |
  • width, minWidth, maxWidth, resizable, cssClass column attributes
  • 32 |
  • custom column formatters
  • 33 |
34 |
37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/examples/slick-default-theme.css: -------------------------------------------------------------------------------- 1 | /* 2 | IMPORTANT: 3 | In order to preserve the uniform grid appearance, all cell styles need to have padding, margin and border sizes. 4 | No built-in (selected, editable, highlight, flashing, invalid, loading, :focus) or user-specified CSS 5 | classes should alter those! 6 | */ 7 | 8 | .slick-header-columns { 9 | background: url('../images/header-columns-bg.gif') repeat-x center bottom; 10 | border-bottom: 1px solid silver; 11 | } 12 | 13 | .slick-header-column { 14 | background: url('../images/header-columns-bg.gif') repeat-x center bottom; 15 | border-right: 1px solid silver; 16 | } 17 | 18 | .slick-header-column:hover, .slick-header-column-active { 19 | background: white url('../images/header-columns-over-bg.gif') repeat-x center bottom; 20 | } 21 | 22 | .slick-headerrow { 23 | background: #fafafa; 24 | } 25 | 26 | .slick-headerrow-column { 27 | background: #fafafa; 28 | border-bottom: 0; 29 | height: 100%; 30 | } 31 | 32 | .slick-row.ui-state-active { 33 | background: #F5F7D7; 34 | } 35 | 36 | .slick-row { 37 | position: absolute; 38 | background: white; 39 | border: 0px; 40 | line-height: 20px; 41 | } 42 | 43 | .slick-row.selected { 44 | z-index: 10; 45 | background: #DFE8F6; 46 | } 47 | 48 | .slick-cell { 49 | padding-left: 4px; 50 | padding-right: 4px; 51 | } 52 | 53 | .slick-group { 54 | border-bottom: 2px solid silver; 55 | } 56 | 57 | .slick-group-toggle { 58 | width: 9px; 59 | height: 9px; 60 | margin-right: 5px; 61 | } 62 | 63 | .slick-group-toggle.expanded { 64 | background: url(../images/collapse.gif) no-repeat center center; 65 | } 66 | 67 | .slick-group-toggle.collapsed { 68 | background: url(../images/expand.gif) no-repeat center center; 69 | } 70 | 71 | .slick-group-totals { 72 | color: gray; 73 | background: white; 74 | } 75 | 76 | .slick-cell.selected { 77 | background-color: beige; 78 | } 79 | 80 | .slick-cell.active { 81 | border-color: gray; 82 | border-style: solid; 83 | } 84 | 85 | .slick-sortable-placeholder { 86 | background: silver !important; 87 | } 88 | 89 | .slick-row.odd { 90 | background: #fafafa; 91 | } 92 | 93 | .slick-row.ui-state-active { 94 | background: #F5F7D7; 95 | } 96 | 97 | .slick-row.loading { 98 | opacity: 0.5; 99 | filter: alpha(opacity = 50); 100 | } 101 | 102 | .slick-cell.invalid { 103 | border-color: red; 104 | -moz-animation-duration: 0.2s; 105 | -webkit-animation-duration: 0.2s; 106 | -moz-animation-name: slickgrid-invalid-hilite; 107 | -webkit-animation-name: slickgrid-invalid-hilite; 108 | } 109 | 110 | @-moz-keyframes slickgrid-invalid-hilite { 111 | from { box-shadow: 0 0 6px red; } 112 | to { box-shadow: none; } 113 | } 114 | 115 | @-webkit-keyframes slickgrid-invalid-hilite { 116 | from { box-shadow: 0 0 6px red; } 117 | to { box-shadow: none; } 118 | } -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/actions.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/actions.gif -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/ajax-loader-small.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/ajax-loader-small.gif -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/arrow_redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/arrow_redo.png -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/arrow_right_peppermint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/arrow_right_peppermint.png -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/arrow_right_spearmint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/arrow_right_spearmint.png -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/arrow_undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/arrow_undo.png -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/bullet_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/bullet_blue.png -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/bullet_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/bullet_star.png -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/bullet_toggle_minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/bullet_toggle_minus.png -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/bullet_toggle_plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/bullet_toggle_plus.png -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/calendar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/calendar.gif -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/collapse.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/collapse.gif -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/comment_yellow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/comment_yellow.gif -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/down.gif -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/drag-handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/drag-handle.png -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/editor-helper-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/editor-helper-bg.gif -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/expand.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/expand.gif -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/header-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/header-bg.gif -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/header-columns-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/header-columns-bg.gif -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/header-columns-over-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/header-columns-over-bg.gif -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/help.png -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/info.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/info.gif -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/listview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/listview.gif -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/pencil.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/pencil.gif -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/row-over-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/row-over-bg.gif -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/sort-asc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/sort-asc.gif -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/sort-asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/sort-asc.png -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/sort-desc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/sort-desc.gif -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/sort-desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/sort-desc.png -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/stripes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/stripes.png -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/tag_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/tag_red.png -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/tick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/tick.png -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/user_identity.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/user_identity.gif -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/images/user_identity_plus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/experimental/D3/lib/slickgrid/images/user_identity_plus.gif -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/lib/firebugx.js: -------------------------------------------------------------------------------- 1 | if (typeof console === "undefined" || typeof console.log === "undefined") { 2 | var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", 3 | "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; 4 | 5 | window.console = {}; 6 | for (var i = 0; i < names.length; ++i) { 7 | window.console[names[i]] = function() {} 8 | } 9 | } -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/lib/jquery.jsonp-2.4.min.js: -------------------------------------------------------------------------------- 1 | // jquery.jsonp 2.4.0 (c)2012 Julian Aubourg | MIT License 2 | // https://github.com/jaubourg/jquery-jsonp 3 | (function(e){function t(){}function n(e){C=[e]}function r(e,t,n){return e&&e.apply&&e.apply(t.context||t,n)}function i(e){return/\?/.test(e)?"&":"?"}function O(c){function Y(e){z++||(W(),j&&(T[I]={s:[e]}),D&&(e=D.apply(c,[e])),r(O,c,[e,b,c]),r(_,c,[c,b]))}function Z(e){z++||(W(),j&&e!=w&&(T[I]=e),r(M,c,[c,e]),r(_,c,[c,e]))}c=e.extend({},k,c);var O=c.success,M=c.error,_=c.complete,D=c.dataFilter,P=c.callbackParameter,H=c.callback,B=c.cache,j=c.pageCache,F=c.charset,I=c.url,q=c.data,R=c.timeout,U,z=0,W=t,X,V,J,K,Q,G;return S&&S(function(e){e.done(O).fail(M),O=e.resolve,M=e.reject}).promise(c),c.abort=function(){!(z++)&&W()},r(c.beforeSend,c,[c])===!1||z?c:(I=I||u,q=q?typeof q=="string"?q:e.param(q,c.traditional):u,I+=q?i(I)+q:u,P&&(I+=i(I)+encodeURIComponent(P)+"=?"),!B&&!j&&(I+=i(I)+"_"+(new Date).getTime()+"="),I=I.replace(/=\?(&|$)/,"="+H+"$1"),j&&(U=T[I])?U.s?Y(U.s[0]):Z(U):(E[H]=n,K=e(y)[0],K.id=l+N++,F&&(K[o]=F),L&&L.version()<11.6?(Q=e(y)[0]).text="document.getElementById('"+K.id+"')."+p+"()":K[s]=s,A&&(K.htmlFor=K.id,K.event=h),K[d]=K[p]=K[v]=function(e){if(!K[m]||!/i/.test(K[m])){try{K[h]&&K[h]()}catch(t){}e=C,C=0,e?Y(e[0]):Z(a)}},K.src=I,W=function(e){G&&clearTimeout(G),K[v]=K[d]=K[p]=null,x[g](K),Q&&x[g](Q)},x[f](K,J=x.firstChild),Q&&x[f](Q,J),G=R>0&&setTimeout(function(){Z(w)},R)),c)}var s="async",o="charset",u="",a="error",f="insertBefore",l="_jqjsp",c="on",h=c+"click",p=c+a,d=c+"load",v=c+"readystatechange",m="readyState",g="removeChild",y=" 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/tests/grid/grid.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | 3 | var grid; 4 | var el, offsetBefore, offsetAfter, dragged; 5 | 6 | var drag = function(handle, dx, dy) { 7 | offsetBefore = el.offset(); 8 | $(handle).simulate("drag", { 9 | dx: dx || 0, 10 | dy: dy || 0 11 | }); 12 | dragged = { dx: dx, dy: dy }; 13 | offsetAfter = el.offset(); 14 | } 15 | 16 | var moved = function (dx, dy, msg) { 17 | msg = msg ? msg + "." : ""; 18 | var actual = { left: offsetAfter.left, top: offsetAfter.top }; 19 | var expected = { left: offsetBefore.left + dx, top: offsetBefore.top + dy }; 20 | same(actual, expected, 'dragged[' + dragged.dx + ', ' + dragged.dy + '] ' + msg); 21 | } 22 | 23 | var ROWS = 500, COLS = 10; 24 | var data = [], row; 25 | for (var i = 0; i < ROWS; i++) { 26 | row = { id: "id_" + i }; 27 | for (var j = 0; j < COLS; j++) { 28 | row["col_" + j] = i + "." + j; 29 | } 30 | data.push(row); 31 | } 32 | 33 | var cols = [], col; 34 | for (var i = 0; i < COLS; i++) { 35 | cols.push({ 36 | id: "col" + i, 37 | field: "col_" + i, 38 | name: "col_" + i 39 | }); 40 | } 41 | 42 | cols[0].minWidth = 70; 43 | 44 | grid = new Slick.Grid("#container", data, cols); 45 | grid.render(); 46 | 47 | module("grid - column resizing"); 48 | 49 | test("minWidth is respected", function () { 50 | var firstCol = $("#container .slick-header-column:first"); 51 | firstCol.find(".slick-resizable-handle:first").simulate("drag", { dx: 100, dy: 0 }); 52 | firstCol.find(".slick-resizable-handle:first").simulate("drag", { dx: -200, dy: 0 }); 53 | equal(firstCol.outerWidth(), 70, "width set to minWidth"); 54 | }); 55 | 56 | test("onColumnsResized is fired on column resize", function () { 57 | expect(2); 58 | grid.onColumnsResized.subscribe(function() { ok(true,"onColumnsResized called") }); 59 | var oldWidth = cols[0].width; 60 | $("#container .slick-resizable-handle:first").simulate("drag", { dx: 100, dy: 0 }); 61 | equal(cols[0].width, oldWidth+100-1, "columns array is updated"); 62 | }); 63 | 64 | test("getData should return data", function () { 65 | equal(grid.getData(), data); 66 | }); 67 | 68 | })(jQuery); -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/tests/grid/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SlickGrid - Grid tests 5 | 6 | 7 | 8 | 9 | 10 |

SlickGrid - Grid Test Suite

11 |

12 |
13 |

14 |
    15 | 16 |


    17 |
    18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/tests/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SlickGrid tests 5 | 6 | 18 | 19 | 20 | 21 |

    SlickGrid tests

    22 |

    23 | 24 |

    Slick.Data

    25 | 28 | 29 |

    Slick

    30 | 33 | 34 |

    Plugins

    35 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /experimental/D3/lib/slickgrid/tests/plugins/autotooltips.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SlickGrid - AutoTooltips plugin tests 5 | 6 | 7 | 8 | 9 | 10 |

    SlickGrid - AutoTooltips Test Suite

    11 |

    12 |
    13 |

    14 |
      15 | 16 |


      17 |
      18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /experimental/vis/d3_csv.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # d3_csv.sh script -- run script to create JS HTML files based in CSV data 3 | # @(#) (C) Copyright 2000-2012 Hewlett-Packard Development Company, L.P. 4 | # 5 | # version 1.1 07/24/2013 creates D3 HTML charts based on CSV data 6 | # version 1.2 05/06/2015 change D3 to a locally hosted path 7 | 8 | # DESCRIPTION: 9 | # 10 | # d3_csv.sh will place copies of D3 based javascript HTML files in the PWD 11 | # and each of them will try to read specific CSV file data. The GUI charts 12 | # created are interactive and provide a more visaul way to review the large 13 | # datasets presented int he CSV data. The CSV files are expected to be in 14 | # format generated by the kiinfo tool using the 'csv' option. There are 15 | # specific column header names used to set line colors so nono-std CSV files 16 | # may not present in the proper color scheme. 17 | # 18 | # USAGE: 19 | # 20 | # ./d3_csv.sh 21 | # 22 | EVDIR=/opt/linuxki/experimental/vis 23 | SAVED_PWD=$PWD 24 | OS=`uname` 25 | 26 | for tag in `ls ki*.????_????* | grep -v "ki.err" | awk '{print substr($1,match($1,"[0-9][0-9][0-9][0-9]_[0-9][0-9][0-9][0-9]"),9)}' | sort | uniq ` 27 | do 28 | cd $SAVED_PWD 29 | if [ -f kidsk.$tag.csv ] ; then 30 | rm -f kidsk.csv 31 | cat kidsk.$tag.csv | sed 's/ //g' > kidsk.csv 32 | ln -s $EVDIR/kidsk.html ./kidsk.html 2>/dev/null 33 | fi 34 | 35 | if [ -f kifile.$tag.csv ] ; then 36 | rm -f kifile.csv 37 | ln -s kifile.$tag.csv kifile.csv 2>/dev/null 38 | ln -s $EVDIR/kifile.html ./kifile.html 2>/dev/null 39 | fi 40 | 41 | if [ -f kipid.$tag.csv ] ; then 42 | rm -f kipid_io.csv 43 | rm -f kipid_sched.csv 44 | ln -s kipid.$tag.csv kipid.csv 2>/dev/null 45 | 46 | # The following script splits out the kipid csv data into scheduling 47 | # and I/O related data: 48 | 49 | $EVDIR/kipid_awk_csv.sh kipid.csv 50 | ln -s $EVDIR/kipid_io.html ./kipid_io.html 2>/dev/null 51 | ln -s $EVDIR/kipid_sched.html ./kipid_sched.html 2>/dev/null 52 | fi 53 | 54 | if [ -f kirunq.$tag.csv ] ; then 55 | rm -f kirunq.csv 56 | ln -s kirunq.$tag.csv kirunq.csv 2>/dev/null 57 | ln -s $EVDIR/kirunq.html ./kirunq.html 2> /dev/null 58 | fi 59 | 60 | if [ -f kiwait.$tag.csv ] ; then 61 | rm -f kiwait.csv 62 | ln -s kiwait.$tag.csv kiwait.csv 2>/dev/null 63 | ln -s $EVDIR/kiwait.html ./kiwait.html 2>/dev/null 64 | fi 65 | 66 | if [ -f kisock.$tag.csv ] ; then 67 | rm -f kisock.csv 68 | head -1 kisock.$tag.csv > kisock.csv 69 | cat kisock.$tag.csv | sort -n -r -k 14,14 -t "," | head -80 | grep -v Local_IP >> kisock.csv 70 | ln -s $EVDIR/network.html ./network.html 2>/dev/null 71 | ln -s $EVDIR/socket.html ./socket.html 2>/dev/null 72 | fi 73 | 74 | 75 | done 76 | -------------------------------------------------------------------------------- /experimental/vis/futex_2_csv.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "time,cpu,pid,retval,sctime,addr,op,val" > futex_global.csv 3 | grep ' futex ' ki.$1 |grep -v entry| awk '{print $1","$2","$3","$7","$9","$10","$11","$12}' > futex_global.raw1 4 | grep -v ',,' futex_global.raw1 > futex_global.raw2 5 | sed 's/,/ /g' futex_global.raw2| sed 's/=/ /g' | cut -d ' ' -f 1,3,5,7,8,10,12,14 > futex_global.raw3 6 | sed 's/ /,/g' futex_global.raw3 | head -20000 >> futex_global.csv 7 | rm -Rf futex_global.raw* 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /experimental/vis/kidsk_2_csv.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "time,device,rw,sector,length,qpid,spid,qtime,svctime" > kidsk_global.csv 3 | grep block_rq_complete ki.$1 | grep ' tgid=' > /dev/null 4 | RETVAL=$? 5 | if [ $RETVAL -ne 0 ] ; then 6 | grep ' block_rq_complete ' ki.$1 | awk '{print $1","$5","$6","$8","$9","$12","$13","$15","$17}' > kidsk_global.raw1 7 | else 8 | grep ' block_rq_complete ' ki.$1 | awk '{print $1","$6","$7","$9","$10","$13","$14","$16","$18}' > kidsk_global.raw1 9 | fi 10 | sed 's/,/ /g' kidsk_global.raw1| sed 's/=/ /g' | cut -d ' ' -f 1,3,5,7,9,11,13,14,15 > kidsk_global.raw2 11 | sed 's/ /,/g' kidsk_global.raw2 | head -20000 >> kidsk_global.csv 12 | rm -Rf kidsk_global.raw* 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /experimental/vis/kidsk_trace_view.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | 13 | LinuxKI trace records - I/O of interest completed at $io_time.
      Timespan is +- the IO service time, and typically starts with the block_rq_issue record. 23 |
      24 | 25 |
      "; 26 | 27 | exit(" "); 28 | ?> 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /experimental/vis/kipid_awk_csv.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | awk -F "," '{print $1","$2","$7","$9","$10","$11","$11","$12","$13","$14","$15","$16","$17","$18","$19","$20","$23","$24","$25","$26}' $1 > kipid_sched.csv 3 | awk -F "," '{print $1","$2","$28","$30","$31","$32","$33","$34","$36","$37","$38","$40","$42","$43","$44","$45","$46","$48","$49","$50}' $1 > kipid_io.csv 4 | 5 | -------------------------------------------------------------------------------- /experimental/vis/kitrc_extract.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | tag=$( ls ki.[0-9][0-9][0-9][0-9]_[0-9][0-9][0-9][0-9] 2>/dev/null | awk '{print substr($1,match($1,"[0-9][0-9][0-9][0-9]_[0-9][0-9][0-9][0-9]"))}' ) 3 | cwd=$(pwd) 4 | cd ../../ 5 | /opt/linuxki/kiinfo -kitrace -ts $tag -starttime $1 -endtime $2 > $cwd/kitrc.txt 2>&1 6 | -------------------------------------------------------------------------------- /experimental/vis/kivis.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | 13 | "); 25 | } 26 | 27 | 28 | // Generate the data to be displayed in the formatted textarea 29 | 30 | switch ($type) { 31 | case kitrace: 32 | $header = "

      LinuxKI trace records -

      "; 33 | $data = shell_exec ("/opt/linuxki/kiinfo -kitrace pid=" . $pid . 34 | " -ts " . $ts . " -starttime " . $start . 35 | " -endtime " . $end. " 2>&1 "); 36 | break; 37 | case kitrace_disk: 38 | $header = "

      LinuxKI I/O trace records - I/O of interest completed at $io_time.
      Timespan is +- the IO service time, and typically starts with the block_rq_issue record.

      "; 39 | $data = shell_exec ("/opt/linuxki/kiinfo -kitrace pid=" . $pid . 40 | " -ts " . $ts . " -starttime " . $start . 41 | " -endtime " . $end. " 2>&1 "); 42 | break; 43 | case kipid: 44 | $header = "

      LinuxKI kipid report -

      "; 45 | $data = shell_exec ("/opt/linuxki/kiinfo -kipid rqhist,scdetail,npid=20,pid=" . $pid . 46 | " -ts " . $ts . " -starttime " . $start . " -endtime " . $end); 47 | break; 48 | case pid_switch: 49 | $header = "

      LinuxKI scheduling timeline -

      "; 50 | shell_exec ("/opt/linuxki/experimental/vis/pid_switch.sh " . $pid . " " . $ts . " " . $start . " " . $end . " 2>&1"); 51 | // $data = shell_exec ("/opt/linuxki/experimental/vis/pid_switch.sh " . $pid . " " . $ts . " " . $start . " " . $end . ); 52 | header("Location: VIS/" . $pid . "/pid_switch.html"); /* Redirect browser */ 53 | break; 54 | default: 55 | $data = "no default, choose a tyep field"; 56 | } 57 | 58 | // Define the form window and display $data text content from above 59 | 60 | echo "$header 61 |
      62 | 63 |
      "; 64 | 65 | exit(" "); 66 | ?> 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /experimental/vis/pid_switch.awkpgm: -------------------------------------------------------------------------------- 1 | { 2 | if ($5 == "sched_wakeup") print $1,$2,$3,$4,$5,$6,$8,$9 3 | else if ($5 == "sched_switch") print $1,$2,$3,$4,$5,$6,$8,$9,$15 4 | } 5 | -------------------------------------------------------------------------------- /experimental/vis/pid_switch.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export tag=$2 3 | echo "start,end,cpu,pid,tgid,type,waker,scall_tgt,state,next_tgtcpu,func_ok,id,timestamp" > VIS/$1/pid_switch.csv 4 | 5 | /opt/linuxki/kiinfo -kitrace pid=$1 -ts $2 -starttime $3 -endtime $4 > VIS/$1/pid_switch_sh.tmp1 6 | do_stealtime=0 7 | do_msrstats=0 8 | 9 | grep stealtime VIS/$1/pid_switch_sh.tmp1 10 | if [ $? == 0 ] ; then 11 | do_stealtime=1 12 | fi 13 | grep llcref VIS/$1/pid_switch_sh.tmp1 14 | if [ $? == 0 ] ; then 15 | do_msrstats=1 16 | fi 17 | 18 | 19 | cat VIS/$1/pid_switch_sh.tmp1 | grep -E " sched_wakeup target_pid=$1 | sched_switch " | grep "pid=$1" > VIS/$1/pid_switch_sh.tmp2 20 | 21 | if [ $do_stealtime -eq 1 ] && [ $do_msrstats -eq 1 ] ; then 22 | 23 | cat VIS/$1/pid_switch_sh.tmp2 | awk -f /opt/linuxki/experimental/vis/pid_switch_steal_msr.awkpgm | sed 's/=/ /g' | sed 's/n\/a/NA/g' | awk '{print $1",0,"$3","$5","$7","$8",0,"$10","$12","$14","$15",0,"ENVIRON["tag"]}' >> VIS/$1/pid_switch.csv 24 | 25 | fi 26 | 27 | if [ $do_stealtime -eq 1 ] && [ $do_msrstats -eq 0 ] ; then 28 | 29 | cat VIS/$1/pid_switch_sh.tmp2 | awk -f /opt/linuxki/experimental/vis/pid_switch_steal.awkpgm | sed 's/=/ /g' | sed 's/n\/a/NA/g' | awk '{print $1",0,"$3","$5","$7","$8",0,"$10","$12","$14","$15",0,"ENVIRON["tag"]}' >> VIS/$1/pid_switch.csv 30 | 31 | fi 32 | 33 | if [ $do_stealtime -eq 0 ] && [ $do_msrstats -eq 1 ] ; then 34 | 35 | cat VIS/$1/pid_switch_sh.tmp2 | awk -f /opt/linuxki/experimental/vis/pid_switch_msr.awkpgm | sed 's/=/ /g' | sed 's/n\/a/NA/g' | awk '{print $1",0,"$3","$5","$7","$8",0,"$10","$12","$14","$15",0,"ENVIRON["tag"]}' >> VIS/$1/pid_switch.csv 36 | 37 | fi 38 | 39 | if [ $do_stealtime -eq 0 ] && [ $do_msrstats -eq 0 ] ; then 40 | 41 | cat VIS/$1/pid_switch_sh.tmp2 | awk -f /opt/linuxki/experimental/vis/pid_switch.awkpgm | sed 's/=/ /g' | sed 's/n\/a/NA/g' | awk '{print $1",0,"$3","$5","$7","$8",0,"$10","$12","$14","$15",0,"ENVIRON["tag"]}' >> VIS/$1/pid_switch.csv 42 | 43 | fi 44 | 45 | # rm -f VIS/$1/pid_switch_sh.tmp* 46 | 47 | ln -s /opt/linuxki/experimental/vis/pid_switch.html VIS/$1/pid_switch.html 2>/dev/null 48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /experimental/vis/pid_switch.sh.save: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export tag=$2 4 | echo "start,end,cpu,pid,tgid,type,waker,scall_tgt,state,next_tgtcpu,func_ok,id,timestamp" > VIS/$1/pid_switch.csv 5 | 6 | /opt/linuxki/kiinfo -kitrace pid=$1 -ts $2 -starttime $3 -endtime $4 | grep -E " sched_wakeup target_pid=$1 | sched_switch " | grep "pid=$1" | awk -f /opt/linuxki/experimental/vis/pid_switch.awkpgm | sed 's/=/ /g' | sed 's/n\/a/NA/g' | awk '{print $1",0,"$3","$5","$7","$8",0,"$10","$12","$14","$15",0,"ENVIRON["tag"]}' >> VIS/$1/pid_switch.csv 7 | 8 | ln -s /opt/linuxki/experimental/vis/pid_switch.html VIS/$1/pid_switch.html 9 | 10 | -------------------------------------------------------------------------------- /experimental/vis/pid_switch_msr.awkpgm: -------------------------------------------------------------------------------- 1 | { 2 | if ($5 == "sched_wakeup") print $1,$2,$3,$4,$5,$6,$8,$9 3 | else if ($5 == "sched_switch") print $1,$2,$3,$4,$5,$6,$8,$9,$22 4 | } 5 | -------------------------------------------------------------------------------- /experimental/vis/pid_switch_steal.awkpgm: -------------------------------------------------------------------------------- 1 | { 2 | if ($5 == "sched_wakeup") print $1,$2,$3,$4,$5,$6,$8,$9 3 | else if ($5 == "sched_switch") print $1,$2,$3,$4,$5,$6,$8,$9,$17 4 | } 5 | -------------------------------------------------------------------------------- /experimental/vis/pid_switch_steal_msr.awkpgm: -------------------------------------------------------------------------------- 1 | { 2 | if ($5 == "sched_wakeup") print $1,$2,$3,$4,$5,$6,$8,$9 3 | else if ($5 == "sched_switch") print $1,$2,$3,$4,$5,$6,$8,$9,$24 4 | } 5 | -------------------------------------------------------------------------------- /images/linuxKI.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/images/linuxKI.jpg -------------------------------------------------------------------------------- /images/linuxKI_lg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/images/linuxKI_lg.jpg -------------------------------------------------------------------------------- /images/linuxKI_med.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/images/linuxKI_med.jpg -------------------------------------------------------------------------------- /images/linuxKI_sm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/images/linuxKI_sm.jpg -------------------------------------------------------------------------------- /images/linuxKI_square.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/images/linuxKI_square.jpg -------------------------------------------------------------------------------- /images/linuxKI_square_lg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/images/linuxKI_square_lg.jpg -------------------------------------------------------------------------------- /images/linuxKI_square_med.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/images/linuxKI_square_med.jpg -------------------------------------------------------------------------------- /images/linuxKI_square_sm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/images/linuxKI_square_sm.jpg -------------------------------------------------------------------------------- /images/linuxKI_wide.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/images/linuxKI_wide.jpg -------------------------------------------------------------------------------- /images/linuxKI_wide_lg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/images/linuxKI_wide_lg.jpg -------------------------------------------------------------------------------- /images/linuxKI_wide_med.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/images/linuxKI_wide_med.jpg -------------------------------------------------------------------------------- /images/linuxKI_wide_sm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/images/linuxKI_wide_sm.jpg -------------------------------------------------------------------------------- /images/winki_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/images/winki_logo.jpg -------------------------------------------------------------------------------- /images/winki_wide.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/images/winki_wide.jpg -------------------------------------------------------------------------------- /man/man1/kiall.1: -------------------------------------------------------------------------------- 1 | .\" Process this file with 2 | .\" groff -man -Tascii kiinfo.1 3 | .\" 4 | .ad 5 | .TH kiall 1 "7.11 - May 06, 2025" version "7.11" 6 | .SH NAME 7 | kiall - LinuxKI trace dump post-processing script 8 | 9 | .SH SYNOPSIS 10 | .B kiall [OPTIONS] 11 | 12 | .SH DESCRIPTION 13 | 14 | Once the ki_all.*.tgz file is collected, the most useful LinuxKI reports can be generated with the kiall script, also called post-processing. Note that the post-processing of the LinuxKI dump data can be done on a different system where the data was collected. By default, the kiall script will explode the tar bundle in the current working directory and execute the kiinfo tool to generate the various LinuxKI reports: 15 | 16 | \fB$ /opt/linuxki/kiall\fR 17 | 18 | The kiall script can handle multiple ki_all.*.tgz files from multiple hosts as it will search the current working directory for all of the ki_all.*.tgz files. Also, the -r option can be used to create a / subdirectory structure which can be used to organize multiple trace collections from different hosts: 19 | 20 | \fB$ ls ki_all*\fR 21 | ki_all.node1.0828_1429.tgz ki_all.node1.0828_1448.tgz 22 | \fB$ kiall -r\fR 23 | Running KI tools for 0828_1429 for host node1 24 | ... 25 | Running KI tools for 0828_1448 for host node1 26 | ... 27 | 28 | After executing kiall above, the LinuxKI files and generated reports will be stored in a subdirectory of the form /. For the example above, it will create 2 subdirectories: 29 | 30 | node1/0828_1429 31 | node2/0828_1448 32 | 33 | The -f option for kiall can be used to search for LinuxKI data in directory tree to be processed. This option is useful for re-processing a number of LinuxKI trace collections without having to change the directories and execute kiall for each LinuxKI trace collection. 34 | 35 | \fB$ /opt/linuxki/kiall -f\fR 36 | 37 | .SH OPTIONS 38 | 39 | -h Help 40 | -l lite collection 41 | -m Skip MW processing 42 | -r restore into created subdir - / 43 | -f Find KI files in pwd and any directories below 44 | -c Cluster-wide processing 45 | -x Generate kparse text format instead of html format 46 | -M Leave C++ function names mangled 47 | -B Add Disk Block Frequency stats to Kparse report 48 | -t Only runs KI reports bundle with matching timestamp 49 | 50 | .SH AUTHOR 51 | Mark C. Ray 52 | 53 | .SH SEE ALSO 54 | LinuxKI(1) kiinfo-dump(1) kiinfo-likidump(1) kiinfo-likimerge(1) kiinfo-live(1) 55 | kiinfo-kparse(1) kiinfo-kitrace(1) kiinfo-kipid(1) kiinfo-kiprof(1) kiinfo-kidsk(1) 56 | kiinfo-kirunq(1) kiinfo-kiwait(1) kiinfo-kifile(1) kiinfo-kisock(1) kiinfo-kifutex(1) 57 | kiinfo-kidock(1) kiinfo-kiall(1) kiinfo-clparse(1) runki(1) kiall(1) kiclean(1) 58 | kivis-build(1) kivis-start(1) kivis-stop(1) 59 | 60 | https://github.com/HewlettPackard/LinuxKI/wiki 61 | -------------------------------------------------------------------------------- /man/man1/kiclean.1: -------------------------------------------------------------------------------- 1 | .\" Process this file with 2 | .\" groff -man -Tascii kiinfo.1 3 | .\" 4 | .ad 5 | .TH kiclean 1 "7.11 - May 06, 2025" version "7.11" 6 | .SH NAME 7 | kiclean - LinuxKI cleanup script 8 | 9 | .SH SYNOPSIS 10 | .B kiclean [OPTIONS] 11 | 12 | .SH DESCRIPTION 13 | 14 | When you have completed your analysis on LinuxKI data, you can cleanup a subdirectory using the kiclean script. This script will keep the ki_all.*.tgz file as well as the generated reports, but will remove the LinuxKI binary traces files and other related data (this data is saved in the ki_all.*.tgz file). If the -f option is used, other miscellaneous files created during the analysis are also removed. Below is an example: 15 | 16 | $ cd node1/0828_1429 17 | $ kiclean -f 18 | Cleaning /work/mcr/node1/0828_1429 19 | kiclean complete 20 | 21 | $ ls 22 | ki_all.node1.0828_1429.tgz kifile.0828_1429.txt kiprof.0828_1429.txt 23 | kiwait.0828_1429.txt PIDS kidsk.0828_1429.txt 24 | kipid.0828_1429.txt kirunq.0828_1429.txt kp.0828_1429.html 25 | 26 | The -p option will remove the PIDS subdirectory as well as the other files as this can take a lot of additional space. The -r option is useful when cleaning up multiple LinuxKI trace collections that reside somewhere under the current working directory. For example: 27 | 28 | $ pwd 29 | /work/mcr/cust1 30 | $ ls 31 | 1211_1335 1211_1435 32 | 33 | $ kiclean -r -f -p 34 | Cleaning /work/mcr/cust1/1211_1335 35 | Cleaning /work/mcr/cust1/1211_1435 36 | 37 | .SH OPTIONS 38 | 39 | -h Help 40 | -r Recursively traverse sudirs looking for KI data to archive 41 | -p Remove PIDS subdirectory 42 | -f Force remove misc/tmp files 43 | 44 | .SH AUTHOR 45 | Mark C. Ray 46 | 47 | .SH SEE ALSO 48 | LinuxKI(1) kiinfo-dump(1) kiinfo-likidump(1) kiinfo-likimerge(1) kiinfo-live(1) 49 | kiinfo-kparse(1) kiinfo-kitrace(1) kiinfo-kipid(1) kiinfo-kiprof(1) kiinfo-kidsk(1) 50 | kiinfo-kirunq(1) kiinfo-kiwait(1) kiinfo-kifile(1) kiinfo-kisock(1) kiinfo-kifutex(1) 51 | kiinfo-kidock(1) kiinfo-kiall(1) kiinfo-clparse(1) runki(1) kiall(1) kiclean(1) 52 | kivis-build(1) kivis-start(1) kivis-stop(1) 53 | 54 | https://github.com/HewlettPackard/LinuxKI/wiki 55 | -------------------------------------------------------------------------------- /man/man1/kiinfo-kiall.1: -------------------------------------------------------------------------------- 1 | .\" Process this file with 2 | .\" groff -man -Tascii kiinfo.1 3 | .\" 4 | .ad l 5 | .TH kiinfo-kiall 1 "7.11 - May 06, 2025" version "7.11" 6 | .SH NAME 7 | kiinfo - LinuxKI data collection and analysis engine 8 | 9 | .SH SYNOPSIS 10 | .B kiinfo \-kiall [FLAGS] [OPTIONS] 11 | 12 | .SH DESCRIPTION 13 | 14 | The \fBkiinfo -kiall\fR option generates all the LinuxKI reports (kparse, kipid, kidsk, kirunq, kiprof, kiwait, kifutex, kisock, and kifile) in a single pass of the LinuxKI data. When executed from the kiall script, this option results in a performance improvement of nearly 5x compared to generating each LinuxKI report separately. Note that this option does not generate the LinuxKI ASCII file (\fBkiinfo -kitrace\fR). 15 | 16 | .SH OPTIONS 17 | 18 | See kiinfo(1). 19 | 20 | .SH FLAGS 21 | .B help 22 | .RS 23 | Provide help information for kiall flags 24 | .RE 25 | 26 | .B oracle 27 | .RS 28 | Includes Oracle kipid output 29 | .RE 30 | 31 | .B mangle 32 | .RS 33 | Leave C++ function names mangled 34 | .RE 35 | 36 | .B freq= 37 | .RS 38 | CPU profile (hardclock) frequency (default 100 times per second) 39 | .RE 40 | 41 | .B blkfrq 42 | .RS 43 | Add Disk Block Frequency stats to Kparse report 44 | .RE 45 | 46 | .B edus= 47 | .RS 48 | Specify output of "db2pd -edus" to get DB2 thread names 49 | .RE 50 | 51 | .B jstack= 52 | .RS 53 | Jstack output file to use (default jstack.) 54 | .RE 55 | 56 | .B csv 57 | .RS 58 | Generates CSV outputs for kipid, kidsk, kirunq, kifile, and kiwait 59 | .RE 60 | 61 | .SH EXAMPLES 62 | 63 | 1) Running kiinfo -kiall on LinuxKI data from the runki script to generate all the LinuxKI reports and CSV files in a single pass: 64 | 65 | .B # kiinfo -kiall oracle,csv -html -ts 1422_0623 66 | 67 | After executing, the following reports (and appropriate CSV files) will be generated: 68 | 69 | kp.0422_0623.html 70 | kidsk.0422_0623.txt 71 | kifile.0422_0623.txt 72 | kifutex.0422_0623.txt 73 | kipid.0422_0623.txt 74 | kipid.oracle.0422_0623.txt 75 | kiprof.0422_0623.txt 76 | kirunq.0422_0623.txt 77 | kiwait.0422_0623.txt 78 | kisock.0422_0623.txt 79 | kidock.0422_0623.txt 80 | kidsk.0422_0623.csv 81 | kifile.0422_0623.csv 82 | kipid.0422_0623.csv 83 | kirunq.0422_0623.csv 84 | kiwait.0422_0623.csv 85 | 86 | .SH AUTHOR 87 | Mark C. Ray 88 | 89 | .SH SEE ALSO 90 | LinuxKI(1) kiinfo(1) kiinfo-dump(1) kiinfo-likidump(1) kiinfo-likimerge(1) kiinfo-live(1) kiinfo-kparse(1) kiinfo-kitrace(1) kiinfo-kipid(1) kiinfo-kiprof(1) kiinfo-kidsk(1) kiinfo-kirunq(1) kiinfo-kiwait(1) kiinfo-kifile(1) kiinfo-kisock(1) kiinfo-kifutex(1) kiinfo-kidock(1) kiinfo-clparse(1) runki(1) kiall(1) kiclean(1) kivis-build(1) kivis-start(1) kivis-stop(1) 91 | 92 | https://github.com/HewlettPackard/LinuxKI/wiki 93 | -------------------------------------------------------------------------------- /man/man1/kiinfo-kparse.1: -------------------------------------------------------------------------------- 1 | .\" Process this file with 2 | .\" groff -man -Tascii kiinfo.1 3 | .\" 4 | .ad l 5 | .TH kiinfo-kparse 1 "7.11 - May 06, 2025" version "7.11" 6 | .SH NAME 7 | kiinfo - LinuxKI data collection and analysis engine 8 | 9 | .SH SYNOPSIS 10 | .B kiinfo \-kparse [FLAGS] [OPTIONS] 11 | 12 | .SH DESCRIPTION 13 | 14 | \fBkiinfo -kparse\fR option produces the Kparse System Overview Report in either text or html format with a variety of information from the LinuxKI binary data created by the runki script using either LiKI trace data or ftrace data. The kparse option will attempt to identify various patterns and provides a warning if a condition _may_ be suspected of causing some performance issues and warrants additional investigation. 15 | 16 | .SH OPTIONS 17 | 18 | See kiinfo(1). 19 | 20 | .SH FLAGS 21 | .B help 22 | .RS 23 | Provide help information for kparse flags 24 | .RE 25 | 26 | .B kptree 27 | .RS 28 | When used with kiinfo -kipid pidtree, links PID numbers to kipid output in the PIDS directory. 29 | .RE 30 | 31 | .B nooracle 32 | .RS 33 | Skip oracle section in kparse output. 34 | .RE 35 | 36 | .B nofutex 37 | .RS 38 | Do not collect futex statistics 39 | .RE 40 | 41 | .B mangle 42 | .RS 43 | Leave C++ function names mangled 44 | .RE 45 | 46 | .B blkfrq 47 | .RS 48 | Add Disk Block Frequency stats to Kparse report 49 | .RE 50 | 51 | .B lite 52 | .RS 53 | Reduce memory footprint of kiinfo for large collections. Some per-thread sections are omitted. 54 | .RE 55 | 56 | .B edus= 57 | .RS 58 | Specify output of "db2pd -edus" to get DB2 thread names. 59 | .RE 60 | 61 | .B jstack= 62 | .RS 63 | Jstack output file to use (default jstack.) 64 | .RE 65 | 66 | .B events=[default | all | | ] 67 | .RS 68 | Trace events to be traced 69 | .RE 70 | 71 | .RS 7 72 | \fBdefault\fR - Only trace default events. 73 | .RE 74 | .RS 7 75 | \fBall\fR - Trace all valid ftrace events 76 | .RE 77 | .RS 7 78 | \fB\fR - Only the events needed for a specific subtool is used. 79 | .RE 80 | .RS 7 81 | \fB\fR - Trace a specific event. 82 | .RE 83 | 84 | .B subsys= 85 | .RS 86 | Enable tracing only for certain subsystems. Valid subsystems include: power, scsi, block, sched, syscalls, irq. 87 | .RE 88 | 89 | 90 | .SH EXAMPLES 91 | 92 | 1) Running kiinfo -kparse on LinuxKI data from the runki script and link PID numbers to the kipid output in the PIDS subdirectory 93 | 94 | .B $ kiinfo -kparse kptree -html -ts 1215_0744 >kp.1215_0744.html 95 | 96 | .SH AUTHOR 97 | Mark C. Ray 98 | 99 | .SH SEE ALSO 100 | LinuxKI(1) kiinfo(1) kiinfo-dump(1) kiinfo-likidump(1) kiinfo-likimerge(1) kiinfo-live(1) kiinfo-kitrace(1) kiinfo-kipid(1) kiinfo-kiprof(1) kiinfo-kidsk(1) kiinfo-kirunq(1) kiinfo-kiwait(1) kiinfo-kifile(1) kiinfo-kisock(1) kiinfo-kifutex(1) kiinfo-kidock(1) kiinfo-kiall(1) kiinfo-clparse(1) runki(1) kiall(1) kiclean(1) kivis-build(1) kivis-start(1) kivis-stop(1) 101 | 102 | https://github.com/HewlettPackard/LinuxKI/wiki 103 | -------------------------------------------------------------------------------- /man/man1/kiinfo-likimerge.1: -------------------------------------------------------------------------------- 1 | .\" Process this file with 2 | .\" groff -man -Tascii kiinfo.1 3 | .\" 4 | .ad l 5 | .TH kiinfo-likimerge 1 "7.11 - May 06, 2025" version "7.11" 6 | .SH NAME 7 | kiinfo - LinuxKI data collection and analysis engine 8 | 9 | .SH SYNOPSIS 10 | .B kiinfo [\-likimerge | \-likim] -ts 11 | 12 | .SH DESCRIPTION 13 | 14 | \fBkiinfo \-likimerge\fR is used to merge LiKI per\-CPU binary files into a single LinuxKI binary file, which can then be post\-processed by tools such as \fBkiinfo \-kipid\fR,\fB -kiinfo \-kparse\fR, etc. Merging the data results in fewer LinuxKI binary files in the working directory and subsequent tools should run faster as the LinuxKI data is already merged. Kiinfo -likimerge is run on behalf of the kiall script. 15 | 16 | \fBkiinfo -likimerge\fR does not work with the LinuxKI binary files generated using the ftrace mechanism. 17 | 18 | .SH OPTIONS 19 | 20 | See kiinfo(1). 21 | 22 | .SH FLAGS 23 | .B None 24 | 25 | .SH EXAMPLES 26 | 27 | 1) Typical invocation performed by kiall: 28 | 29 | .B $ runki 30 | 31 | 2) Merge the ki.bin..0927_0857 files 32 | 33 | .B $ kiinfo -likimerge -ts 0927_0857 34 | 35 | .SH AUTHOR 36 | Mark C. Ray 37 | 38 | .SH SEE ALSO 39 | LinuxKI(1) kiinfo(1) kiinfo-dump(1) kiinfo-likidump(1) kiinfo-live(1) kiinfo-kparse(1) kiinfo-kitrace(1) kiinfo-kipid(1) kiinfo-kiprof(1) kiinfo-kidsk(1) kiinfo-kirunq(1) kiinfo-kiwait(1) kiinfo-kifile(1) kiinfo-kisock(1) kiinfo-kifutex(1) kiinfo-kidock(1) kiinfo-kiall(1) kiinfo-clparse(1) runki(1) kiall(1) kiclean(1) kivis-build(1) kivis-start(1) kivis-stop(1) 40 | 41 | https://github.com/HewlettPackard/LinuxKI/wiki 42 | -------------------------------------------------------------------------------- /man/man1/kiinfo-live.1: -------------------------------------------------------------------------------- 1 | .\" Process this file with 2 | .\" groff -man -Tascii kiinfo.1 3 | .\" 4 | .ad l 5 | .TH kiinfo-live 1 "7.11 - May 06, 2025" version "7.11" 6 | .SH NAME 7 | kiinfo - LinuxKI data collection and analysis engine 8 | 9 | .SH SYNOPSIS 10 | .B kiinfo \-live [FLAGS] [OPTIONS] 11 | 12 | .SH DESCRIPTION 13 | 14 | \fBkiinfo -live\fR option uses a curses-based user interface (similar to Glance on HP-UX) to explore the performance data. The LinuxKI data can be analyzed from a running system using the -a option to update every seconds, or LinuxKI data can be analyzed from a LinuxKI dump collected from the runki script using the -ts option. Once \fBkiinfo\fR is started, the question mark "?" can be entered to see the available commands. Note that global statistics are typically shown with lower case commands, while per-task statistics are typically shown with uppercase commands. 15 | 16 | For additional information, please see the Curses-base LinuxKI analysis (\fBkiinfo –live\fR) section. 17 | 18 | .SH OPTIONS 19 | 20 | See kiinfo(1). 21 | 22 | .SH FLAGS 23 | .B help 24 | .RS 25 | Print help syntax 26 | .RE 27 | 28 | .B msr 29 | .RS 30 | Collect advanced CPU statistics such as LLC Hit%, CPI, average CPU frequency, and SMI count 31 | .RE 32 | 33 | .B mangle 34 | .RS 35 | Leave C++ function names mangled 36 | .RE 37 | 38 | .B step= 39 | .RS 40 | Floating point time is seconds of the step interval 41 | .RE 42 | 43 | .B sysignore= 44 | .RS 45 | Do not trace system calls listed in the . This can reduce trace data by eliminating frequently called system calls, such as getrusage(), ctime(), etc. 46 | .RE 47 | 48 | .B edus= 49 | .RS 50 | Specify output of "db2pd -edus" to get DB2 thread names 51 | .RE 52 | 53 | .SH EXAMPLES 54 | 55 | 1) Analyze data on a running system updating the terminal screen every 5 seconds (default): 56 | 57 | .B $ kiinfo -live 58 | 59 | 2) Analyze data from a LinuxKI dump collected using the runki script 60 | 61 | .B $ kiinfo -live -ts 0223_1536 62 | 63 | .SH AUTHOR 64 | Mark C. Ray 65 | 66 | .SH SEE ALSO 67 | LinuxKI(1) kiinfo(1) kiinfo-dump(1) kiinfo-likidump(1) kiinfo-likimerge(1) kiinfo-kparse(1) kiinfo-kitrace(1) kiinfo-kipid(1) kiinfo-kiprof(1) kiinfo-kidsk(1) kiinfo-kirunq(1) kiinfo-kiwait(1) kiinfo-kifile(1) kiinfo-kisock(1) kiinfo-kifutex(1) kiinfo-kidock(1) kiinfo-kiall(1) kiinfo-clparse(1) runki(1) kiall(1) kiclean(1) kivis-build(1) kivis-start(1) kivis-stop(1) 68 | 69 | https://github.com/HewlettPackard/LinuxKI/wiki 70 | -------------------------------------------------------------------------------- /man/man1/kivis-build.1: -------------------------------------------------------------------------------- 1 | .\" Process this file with 2 | .\" groff -man -Tascii kiinfo.1 3 | .\" 4 | .ad l 5 | .TH kivis-build 1 "7.11 - May 06, 2025" version "7.11" 6 | .SH NAME 7 | kivis-build \- Build the LinuxKI visualization Docker image 8 | 9 | .SH SYNOPSIS 10 | .B kivis-build 11 | 12 | .SH DESCRIPTION 13 | 14 | .B kivis-build 15 | builds the Docker image 16 | .B linuxki 17 | which is used by the LinuxKI visualization tools 18 | .B kivis-start 19 | and 20 | .BR kivis-stop . 21 | 22 | Must be run using 23 | .B sudo 24 | or by a user in the 25 | .B docker 26 | group. 27 | 28 | .SH ENVIRONMENT 29 | 30 | .B kivis-build 31 | supports proxies for HTTP and HTTPS when building the image. The 32 | .B yum 33 | commands used when building the container will use the following proxy environment variables: 34 | 35 | .RS 36 | .B http_proxy, https_proxy 37 | .RS 38 | If set, the 39 | .B http_proxy 40 | and 41 | .B https_proxy 42 | variables should contain the URL of the proxy for the HTTP and HTTPS connection respectively. For example: 43 | .B http://proxy.fqdn:8080 44 | .RE 45 | 46 | .B no_proxy 47 | .RS 48 | If set, this variable should contain a comma-separated list of domain extensions the proxy should not be used for. For example: 49 | .B localhost,127.0.0.1,.dev.net 50 | .RE 51 | 52 | .SH AUTHOR 53 | Christopher Voltz 54 | 55 | .SH SEE ALSO 56 | .BR LinuxKI (1), 57 | .BR kiinfo-dump (1), 58 | .BR kiinfo-likidump (1), 59 | .BR kiinfo-likimerge (1), 60 | .BR kiinfo-live (1), 61 | .BR kiinfo-kparse (1), 62 | .BR kiinfo-kitrace (1), 63 | .BR kiinfo-kipid (1), 64 | .BR kiinfo-kiprof (1), 65 | .BR kiinfo-kidsk (1), 66 | .BR kiinfo-kirunq (1), 67 | .BR kiinfo-kiwait (1), 68 | .BR kiinfo-kifile (1), 69 | .BR kiinfo-kisock (1), 70 | .BR kiinfo-kifutex (1), 71 | .BR kiinfo-kidock (1), 72 | .BR kiinfo-kiall (1), 73 | .BR kiinfo-clparse (1), 74 | .BR runki (1), 75 | .BR kiall (1), 76 | .BR kiclean (1), 77 | .BR kivis-start (1), 78 | .BR kivis-stop (1) 79 | 80 | .UR https://github.com/HewlettPackard/LinuxKI/wiki 81 | .UE 82 | -------------------------------------------------------------------------------- /man/man1/kivis-start.1: -------------------------------------------------------------------------------- 1 | .\" Process this file with 2 | .\" groff -man -Tascii kiinfo.1 3 | .\" 4 | .ad l 5 | .TH kivis-start 1 "7.11 - May 06, 2025" version "7.11" 6 | .SH NAME 7 | kivis-start \- Starts the LinuxKI visualization Docker container 8 | 9 | .SH SYNOPSIS 10 | .B kivis-start 11 | 12 | .SH DESCRIPTION 13 | 14 | .B kivis-start 15 | runs the Docker container 16 | .IB $USER -linuxki 17 | (where 18 | .I $USER 19 | is replaced with the current username) and shows the hosted files in the default web browser. The container starts the Apache web server (with PHP extensions) which hosts the files in the current directory. After the container is started, the default browser is opened to show either the 20 | .B kp.*.html 21 | page (if there is only one in the current directory or subdirectories) or the files in the current directory. 22 | 23 | The command must be run from the directory containing the output of the 24 | .B kiall 25 | command. If the 26 | .B -V 27 | option is used when 28 | .B kiall 29 | is run, then the visualizations will be shown as well. 30 | 31 | When finished viewing the reports, run 32 | .B kivis-stop 33 | to stop the container. 34 | 35 | If the 36 | .IB $USER -linuxki 37 | container is already running, it will be stopped and a new container will be started. 38 | 39 | .SH USAGE 40 | 41 | Generate the report, with visualizations: 42 | .RS 43 | .B $ kiall -r -V 44 | .RE 45 | 46 | Start the container: 47 | .RS 48 | .B $ kivis-start 49 | .RE 50 | 51 | Browser opens to show the report. 52 | 53 | When finished viewing the reports: 54 | .RS 55 | .B $ kivis-stop 56 | .RE 57 | 58 | .SH NOTES 59 | Access to the web pages hosted by the container will be blocked by SELinux unless SELinux is in permissive mode or disabled. 60 | 61 | .SH AUTHOR 62 | Christopher Voltz 63 | 64 | .SH SEE ALSO 65 | .BR LinuxKI (1), 66 | .BR kiinfo-dump (1), 67 | .BR kiinfo-likidump (1), 68 | .BR kiinfo-likimerge (1), 69 | .BR kiinfo-live (1), 70 | .BR kiinfo-kparse (1), 71 | .BR kiinfo-kitrace (1), 72 | .BR kiinfo-kipid (1), 73 | .BR kiinfo-kiprof (1), 74 | .BR kiinfo-kidsk (1), 75 | .BR kiinfo-kirunq (1), 76 | .BR kiinfo-kiwait (1), 77 | .BR kiinfo-kifile (1), 78 | .BR kiinfo-kisock (1), 79 | .BR kiinfo-kifutex (1), 80 | .BR kiinfo-kidock (1), 81 | .BR kiinfo-kiall (1), 82 | .BR kiinfo-clparse (1), 83 | .BR runki (1), 84 | .BR kiall (1), 85 | .BR kiclean (1), 86 | .BR kivis-build (1), 87 | .BR kivis-stop (1) 88 | 89 | .UR https://github.com/HewlettPackard/LinuxKI/wiki 90 | .UE 91 | -------------------------------------------------------------------------------- /man/man1/kivis-stop.1: -------------------------------------------------------------------------------- 1 | .\" Process this file with 2 | .\" groff -man -Tascii kiinfo.1 3 | .\" 4 | .ad l 5 | .TH kivis-stop 1 "7.11 - May 06, 2025" version "7.11" 6 | .SH NAME 7 | kivis-stop \- Stop the LinuxKI visualization Docker container 8 | 9 | .SH SYNOPSIS 10 | .B kivis-stop 11 | 12 | .SH DESCRIPTION 13 | 14 | .B kivis-stop 15 | stops the Docker container 16 | .BR linuxki , 17 | which is used by the LinuxKI visualization tools. The container is only stopped if it is running so it is not an error to run this command when the container is not running. 18 | 19 | .SH AUTHOR 20 | Christopher Voltz 21 | 22 | .SH SEE ALSO 23 | .BR LinuxKI (1), 24 | .BR kiinfo-dump (1), 25 | .BR kiinfo-likidump (1), 26 | .BR kiinfo-likimerge (1), 27 | .BR kiinfo-live (1), 28 | .BR kiinfo-kparse (1), 29 | .BR kiinfo-kitrace (1), 30 | .BR kiinfo-kipid (1), 31 | .BR kiinfo-kiprof (1), 32 | .BR kiinfo-kidsk (1), 33 | .BR kiinfo-kirunq (1), 34 | .BR kiinfo-kiwait (1), 35 | .BR kiinfo-kifile (1), 36 | .BR kiinfo-kisock (1), 37 | .BR kiinfo-kifutex (1), 38 | .BR kiinfo-kidock (1), 39 | .BR kiinfo-kiall (1), 40 | .BR kiinfo-clparse (1), 41 | .BR runki (1), 42 | .BR kiall (1), 43 | .BR kiclean (1), 44 | .BR kivis-build (1), 45 | .BR kivis-start (1), 46 | .BR kivis-stop (1) 47 | 48 | .UR https://github.com/HewlettPackard/LinuxKI/wiki 49 | .UE 50 | -------------------------------------------------------------------------------- /man/man7/linuxki.7: -------------------------------------------------------------------------------- 1 | .\" Process this file with 2 | .\" groff -man -Tascii LinuxKI-man.1 3 | .\" 4 | .ad 1 5 | .TH linuxki 7 "7.11 - May 06, 2025" version "7.11" 6 | .SH NAME 7 | linuxki - LinuxKI Performance Analysis Toolset 8 | 9 | .SH SYNOPSIS 10 | .B /opt/linuxki/runki [-h] [-L] [-M] [-U] [-X] [-a] [-j] [-J 11 | .I path 12 | .B ] [-f | -p] [-n 13 | .I interface 14 | .B ] [-v] [-d 15 | .I duration 16 | .B ] [-t 17 | .I maxrun 18 | .B ] [-P 19 | .I pid 20 | .B ] [-G 21 | .I tgid 22 | .B ] [-C 23 | .I cpu 24 | .B ] [-D 25 | .I dev 26 | .B ] [-R] [-e 27 | .I event 28 | .B ] [-s 29 | .I subsys 30 | .B ] [-I 31 | .I sysignore 32 | .B ] [-T 33 | .I timestamp 34 | .B ] [-c 35 | .I """comment""" 36 | .B ] 37 | 38 | .B /opt/linuxki/kiall [-h] [-l] [-m] [-r] [-f] [-c] [-x] [-t] 39 | .I timestamp 40 | .B ] 41 | 42 | .B /opt/linuxki/kiclean [-h] [-r] [-f] [-p] [-v] 43 | 44 | .B /opt/linuxki/kiinfo - [FLAGS] [OPTIONS] 45 | 46 | .SH DESCRIPTION 47 | The LinuxKI Toolset (or LinuxKI for short) is an opensourced advanced mission critical performance troubleshooting tool for Linux. It is designed to identify performance issues beyond the typical performance metrics and results in a faster root cause analysis for many performance issues. 48 | 49 | LinuxKI is designed to be easy to install, collect data, and generate reports. It runs on Linux kernels 2.6.32 or later running on x86_64 and arm64 platforms. It collects low-level detailed traces reflecting the behavior of the running workload, which can be analyzed online or bundled along with configuration and other performance data into a single gzip file suitable for transfer and offline analysis. 50 | 51 | So make it easier to execute the tools in the LinuxKI Toolset, add /opt/linuxki to your PATH variable: 52 | 53 | .B $ export PATH=$PATH:/opt/linuxki 54 | 55 | .SH OPTIONS 56 | 57 | .B runki 58 | .RS 59 | see runki(1) manpage 60 | .RE 61 | 62 | .B kiall 63 | .RS 64 | see kiall(1) manpage 65 | .RE 66 | 67 | .B kiclean 68 | .RS 69 | see kiclean(1) manpage 70 | .RE 71 | 72 | .B kiinfo 73 | .RS 74 | see kiinfo(1) manpage 75 | .RE 76 | 77 | .B kivis-build 78 | .RS 79 | see kivis-build(1) manpage 80 | .RE 81 | 82 | .B kivis-start 83 | .RS 84 | see kivis-start(1) manpage 85 | .RE 86 | 87 | .B kivis-stop 88 | .RS 89 | see kivis-stop(1) manpage 90 | .RE 91 | 92 | .SH BUGS 93 | 94 | 95 | .SH AUTHOR 96 | Mark C. Ray 97 | 98 | .SH SEE ALSO 99 | 100 | kiinfo(1) kiinfo-dump(1) kiinfo-likidump(1) kiinfo-likimerge(1) kiinfo-live(1) kiinfo-kparse(1) kiinfo-kitrace(1) kiinfo-kipid(1) kiinfo-kiprof(1) kiinfo-kidsk(1) kiinfo-kirunq(1) kiinfo-kiwait(1) kiinfo-kifile(1) kiinfo-kisock(1) kiinfo-kifutex(1) kiinfo-kidock(1) kiinfo-kiall(1) kiinfo-clparse(1) runki(1) kiall(1) kiclean(1) kivis-build(1) kivis-start(1) kivis-stop(1) 101 | 102 | https://github.com/HewlettPackard/LinuxKI/wiki 103 | -------------------------------------------------------------------------------- /ppc64le/kiinfo-rhel7_8.ppc64le: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/ppc64le/kiinfo-rhel7_8.ppc64le -------------------------------------------------------------------------------- /ppc64le/kiinfo-rhel8.ppc64le: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/ppc64le/kiinfo-rhel8.ppc64le -------------------------------------------------------------------------------- /ppc64le/kiinfo-sles15.ppc64le: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/ppc64le/kiinfo-sles15.ppc64le -------------------------------------------------------------------------------- /ppc64le/kiinfo-ubuntu18.ppc64le: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/ppc64le/kiinfo-ubuntu18.ppc64le -------------------------------------------------------------------------------- /rpms/linuxki-7.11-1.noarch.rpm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/rpms/linuxki-7.11-1.noarch.rpm -------------------------------------------------------------------------------- /rpms/linuxki_7.11-1_all.deb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/rpms/linuxki_7.11-1_all.deb -------------------------------------------------------------------------------- /scripts/kivis-build: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Builds the linuxki Docker image which is used by kivis-start and kivis-stop. 4 | # We pass along the proxy environment variables during the build. This makes 5 | # the image less portable then it otherwise would be but is required to support 6 | # building the image with versions of Docker before 17.07. For Docker versions 7 | # 17.07 and later, users are recommended to configure the Docker client to pass 8 | # the variables to containers automatically, as documented at 9 | # https://docs.docker.com/network/proxy/. 10 | 11 | cd /opt/linuxki 12 | docker build \ 13 | --tag linuxki \ 14 | --build-arg http_proxy=$http_proxy \ 15 | --build-arg https_proxy=$https_proxy \ 16 | --build-arg HTTP_PROXY=$HTTP_PROXY \ 17 | --build-arg HTTPS_PROXY=$HTTPS_PROXY \ 18 | . 19 | -------------------------------------------------------------------------------- /scripts/kivis-start: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Starts a linuxki Docker container, which hosts the files in the current 4 | # directory, and then opens the default browser to the kp*.html file if 5 | # there is one or to the directory if there is more than one kp*.html file. 6 | # Note that the container is named $USER-linuxki so kivis-stop knows which 7 | # container to stop but this means that only one container can be run at a 8 | # time, per user, so if a container is already running, it will automatically 9 | # be stopped before the new one is started. Additionally, the Docker image will 10 | # be built, it it hasn't already been. 11 | 12 | # 13 | # Debian has a package called docker which provides a docker command which has 14 | # nothing to do with Docker containers. Debian provides the docker.io package 15 | # to provide Docker container support but it is outdated so tell users to 16 | # install Docker by following the documentation on the docker.com website. 17 | # 18 | 19 | if ! docker --help |& grep container &> /dev/null; then 20 | cat < /dev/null; then 38 | /opt/linuxki/kivis-build 39 | fi 40 | 41 | # 42 | # Stop the container if it is already running. 43 | # 44 | 45 | /opt/linuxki/kivis-stop 46 | 47 | # 48 | # Start the linuxki container $USER-linuxki. 49 | # 50 | 51 | docker run \ 52 | --detach \ 53 | --name $USER-linuxki \ 54 | --publish-all \ 55 | --rm \ 56 | --volume $PWD:/var/www/html/linuxki \ 57 | linuxki 58 | 59 | # 60 | # Display the port the container is running the web server on. 61 | # 62 | 63 | port=$(docker inspect \ 64 | --format='{{(index (index .NetworkSettings.Ports "80/tcp") 0).HostPort}}' \ 65 | $USER-linuxki) 66 | echo Server running on port $port 67 | 68 | # 69 | # Open the default web browser to the LinuxKI report if a single one exists in 70 | # the current directory or subdirectory othewise to the list of files in the 71 | # current directory. 72 | # 73 | 74 | html_file=$(find . -iname 'kp.*.html') 75 | [[ $(echo $html_file | wc --words) -ne 1 ]] && unset html_file 76 | gio open http://localhost:$port/linuxki/$html_file 77 | -------------------------------------------------------------------------------- /scripts/kivis-stop: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Stops the user's linuxki Docker container, if it is running. 4 | 5 | container="$USER-linuxki" 6 | 7 | if docker ps -f name=$container 2>/dev/null | grep -q $container; then 8 | docker stop $container 9 | fi 10 | -------------------------------------------------------------------------------- /scripts/linuxki.sh: -------------------------------------------------------------------------------- 1 | export PATH=$PATH:/opt/linuxki 2 | -------------------------------------------------------------------------------- /src/kiinfo/DiskIo.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | extern int diskio_header_func(void *, void *); 15 | extern int print_diskio_readwrite_func(void *, void *); 16 | extern int print_diskio_init_func(void *, void *); 17 | extern int print_diskio_flush_func(void *, void *); 18 | extern int diskio_readwrite_func(void *, void *); 19 | extern int diskio_flush_func(void *, void *); 20 | extern int diskio_init_func(void *, void *); 21 | 22 | -------------------------------------------------------------------------------- /src/kiinfo/FileIo.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | extern int calc_fobj_totals(void *, void *); 15 | extern int print_fileio_create_func(void *, void *); 16 | extern int print_fileio_readwrite_func(void *, void *); 17 | extern int print_fileio_opend_func(void *, void *); 18 | extern int print_fileio_name_func(void *, void *); 19 | extern int print_fileio_info_func(void *, void *); 20 | extern int print_fileio_direnum_func(void *, void *); 21 | extern int print_fileio_simpleop_func(void *, void *); 22 | extern int fileio_name_func(void *, void *); 23 | extern int fileio_create_func(void *, void *); 24 | extern int fileio_readwrite_func(void *, void *); 25 | extern int file_print_fobj_logio(void *, void *); 26 | extern int file_print_fobj_physio(void *, void *); 27 | -------------------------------------------------------------------------------- /src/kiinfo/Image.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | extern int print_image_func(void *, void *); 15 | extern int image_dcstart_func(void *, void *); 16 | extern int image_dcend_func(void *, void *); 17 | 18 | -------------------------------------------------------------------------------- /src/kiinfo/Makefile: -------------------------------------------------------------------------------- 1 | SRCS = "*.c" 2 | TARGET = "kiinfo" 3 | 4 | all: 5 | gcc -g -O2 -lc -lrt -Wformat=0 -o kiinfo *.c -D__LIKI_RTMERGE -D_GNU_SOURCE -lpthread -lncurses 6 | 7 | clean: 8 | rm -rf kiinfo.aarch64 9 | rm -rf kiinfo 10 | rm -rf kiinfo.x86_64 11 | rm -rf kiinfo.sles15 12 | -------------------------------------------------------------------------------- /src/kiinfo/NetIp.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | extern int print_tcpsendipv4_func(void *, void *); 15 | extern int print_tcpsendipv6_func(void *, void *); 16 | extern int print_tcpgroup1_func(void *, void *); 17 | extern int print_tcpgroup2_func(void *, void *); 18 | extern int print_tcpgroup3_func(void *, void *); 19 | extern int print_tcpgroup4_func(void *, void *); 20 | extern int print_udpgroup1_func(void *, void *); 21 | extern int print_udpgroup2_func(void *, void *); 22 | extern int print_tcpudpfail_func(void *, void *); 23 | 24 | extern int tcpip_sendipv4_func(void *, void *); 25 | extern int tcpip_recvipv4_func(void *, void *); 26 | extern int tcpip_connectipv4_func(void *, void *); 27 | extern int tcpip_disconnectipv4_func(void *, void *); 28 | extern int tcpip_retransmitipv4_func(void *, void *); 29 | extern int tcpip_acceptipv4_func(void *, void *); 30 | extern int tcpip_reconnectipv4_func(void *, void *); 31 | extern int tcpip_fail_func(void *, void *); 32 | extern int tcpip_copyipv4_func(void *, void *); 33 | extern int tcpip_sendipv6_func(void *, void *); 34 | extern int tcpip_recvipv6_func(void *, void *); 35 | extern int tcpip_connectipv6_func(void *, void *); 36 | extern int tcpip_disconnectipv6_func(void *, void *); 37 | extern int tcpip_retransmitipv6_func(void *, void *); 38 | extern int tcpip_acceptipv6_func(void *, void *); 39 | extern int tcpip_reconnectipv6_func(void *, void *); 40 | extern int tcpip_copyipv6_func(void *, void *); 41 | extern int udpip_sendipv4_func(void *, void *); 42 | extern int udpip_recvipv4_func(void *, void *); 43 | extern int udpip_sendipv6_func(void *, void *); 44 | extern int udpip_recvipv6_func(void *, void *); 45 | -------------------------------------------------------------------------------- /src/kiinfo/Pdb.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | extern int get_pdb(PdbImage_t *); 15 | extern int print_win_sym(unsigned long, pid_info_t *); 16 | extern int sprint_win_sym(char *, unsigned long, pid_info_t *); 17 | extern char *get_win_sym(unsigned long, pid_info_t *); 18 | extern char *win_symlookup(vtxt_preg_t *, uint64 , uint64 *); 19 | extern vtxt_preg_t *get_win_pregp(uint64, pid_info_t *); 20 | -------------------------------------------------------------------------------- /src/kiinfo/PerfInfo.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | extern int perfinfo_header_func(void *, void *); 15 | 16 | extern int perfinfo_dpc_func(void *, void*); 17 | extern int perfinfo_timeddpc_func(void *, void*); 18 | extern int perfinfo_isr_func(void *, void*); 19 | extern int perfinfo_profile_func(void *, void*); 20 | extern int perfinfo_sysclenter_func(void *, void*); 21 | extern int perfinfo_sysclexit_func(void *, void*); 22 | extern int perfinfo_interval_func(void *, void*); 23 | -------------------------------------------------------------------------------- /src/kiinfo/Process.c: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include "ki_tool.h" 22 | #include "liki.h" 23 | #include "winki.h" 24 | #include "developers.h" 25 | #include "kd_types.h" 26 | #include "globals.h" 27 | #include "info.h" 28 | #include "hash.h" 29 | #include "scsi.h" 30 | 31 | int 32 | print_process_load_func (void *a, void *v) 33 | { 34 | trace_info_t *trcinfop = (trace_info_t *)a; 35 | ProcessLoad_t *p = (ProcessLoad_t *)trcinfop->cur_event; 36 | 37 | PRINT_COMMON_FIELDS_C002(p); 38 | update_pid_ids(p->tid, p->pid); 39 | trcinfop->pid = p->tid; 40 | 41 | printf (" pid=%d ", p->ProcessID); 42 | PRINT_WIN_FILENAME(&p->Name[0]); 43 | printf ("\n"); 44 | 45 | if (debug) hex_dump(p, 2); 46 | } 47 | 48 | int 49 | process_load_func (void *a, void *v) 50 | { 51 | trace_info_t *trcinfop = (trace_info_t *)a; 52 | ProcessLoad_t *p = (ProcessLoad_t *)trcinfop->cur_event; 53 | uint16 *chr; 54 | pid_info_t *pidp, *tgidp; 55 | 56 | pidp = GET_PIDP(&globals->pid_hash, p->tid); 57 | tgidp = GET_PIDP(&globals->pid_hash, p->ProcessID); 58 | 59 | if (kitrace_flag) { 60 | print_process_load_func (a, v); 61 | } else { 62 | update_pid_ids(p->tid, p->pid); 63 | trcinfop->pid = p->tid; 64 | } 65 | 66 | chr = &p->Name[0]; 67 | /* printf ("pid=%d ", tgidp->PID); PRINT_WIN_NAME2(chr); printf ("\n"); */ 68 | PRINT_WIN_NAME2_STR(util_str, chr); 69 | if (strstr(util_str, ".exe")) { 70 | add_command (&tgidp->cmd, strrchr(util_str, '\\')+1); 71 | add_command (&pidp->cmd, strrchr(util_str, '\\')+1); 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/kiinfo/Process.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | extern int print_process_load_func(void *, void *); 15 | extern int process_load_func(void *, void *); 16 | 17 | -------------------------------------------------------------------------------- /src/kiinfo/Provider.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | extern int print_control_image(void *); 15 | extern int file_version_func(FileVersion_t *); 16 | extern int print_pdb_image(void *); 17 | extern int pdb_image_func(PdbImage_t *); 18 | extern int print_image_id(void *); 19 | extern int print_build_info(void *); 20 | extern int print_file_version(void *); 21 | extern int print_system_paths(void *); 22 | extern int print_unknown_volume(void *); 23 | extern int print_volume_mapping(void *); 24 | -------------------------------------------------------------------------------- /src/kiinfo/SysConfig.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | extern int print_sysconfig_services_func(void *, void *); 15 | extern int sysconfig_services_func(void *, void *); 16 | extern int print_sysconfig_physdisk_func(void *, void *); 17 | extern int sysconfig_physdisk_func(void *, void *); 18 | 19 | -------------------------------------------------------------------------------- /src/kiinfo/Thread.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | extern int thread_header_func(void *, void *); 15 | extern int print_thread_group1_func(void *, void *); 16 | extern int print_thread_cswitch_func(void *, void *); 17 | extern int print_thread_spinlock_func(void *, void *); 18 | extern int print_thread_resource_func(void *, void *); 19 | extern int print_thread_readythread_func(void *, void *); 20 | extern int print_thread_autoboost_func(void *, void *); 21 | 22 | extern int thread_group1_func(void *, void *); 23 | extern int thread_cswitch_func(void *, void *); 24 | extern int thread_spinlock_func(void *, void *); 25 | extern int thread_resource_func(void *, void *); 26 | extern int thread_readythread_func(void *, void *); 27 | extern int thread_setname_func(void *, void *); 28 | extern int thread_autoboost_func(void *, void *); 29 | -------------------------------------------------------------------------------- /src/kiinfo/block.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | extern int block_rq_insert_func(void *, void *); 15 | extern int block_rq_issue_func(void *, void *); 16 | extern int block_rq_complete_func(void *, void *); 17 | extern int block_rq_requeue_func(void *, void *); 18 | extern int block_rq_abort_func(void *, void *); 19 | -------------------------------------------------------------------------------- /src/kiinfo/cache.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | extern int cache_insert_func(void *, void *); 15 | extern int cache_evict_func(void *, void *); 16 | -------------------------------------------------------------------------------- /src/kiinfo/clprint.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | extern int cl_perserver_summary(void *, void *); 15 | extern void cl_toc(); 16 | extern void cl_sys_summary(); 17 | extern void cl_whats_it_doing(); 18 | extern void cl_global_cpu(); 19 | extern void cl_global_summary(); 20 | extern void cl_global_cpu_by_runtime(); 21 | extern void cl_global_cpu_by_systime(); 22 | extern void cl_power_report(); 23 | extern void cl_HT_usage(); 24 | extern void cl_busy_pids(); 25 | extern void cl_top_pids_summary(); 26 | extern void cl_top_pids_runtime(); 27 | extern void cl_top_pids_systime(); 28 | extern void cl_top_pids_runqtime(); 29 | extern void cl_hardclocks(); 30 | extern void cl_hc_states(); 31 | extern void cl_hc_funcbypid(); 32 | extern void cl_th_detection(); 33 | extern void cl_whats_it_waiting_for(); 34 | extern void cl_switch_reports(); 35 | extern void cl_top_switch_pids(); 36 | extern void cl_top_switch_pid_funcs(); 37 | extern void cl_wait_for_cpu(); 38 | extern void cl_runq_statistics(); 39 | extern void cl_futex(); 40 | extern void cl_futex_summary_by_cnt(); 41 | extern void cl_futex_summary_by_time(); 42 | extern void cl_file_activity(); 43 | extern void cl_file_ops(); 44 | extern void cl_file_time(); 45 | extern void cl_file_errs(); 46 | extern void cl_device_report(); 47 | extern void cl_device_globals(); 48 | extern void cl_perdev_reports(); 49 | extern void cl_active_disks(); 50 | extern void cl_permdev_reports(); 51 | extern void cl_active_mdevs(); 52 | extern void cl_perpid_mdev_totals(); 53 | extern void cl_perpid_dev_totals(); 54 | extern void cl_network_report(); 55 | extern void cl_network_globals(); 56 | extern void cl_network_ipip(); 57 | extern void cl_network_local_ip(); 58 | extern void cl_network_top_sockets(); 59 | extern void cl_warnings_report(); 60 | extern void cl_server_csv(); 61 | extern void cl_network_csv(); 62 | -------------------------------------------------------------------------------- /src/kiinfo/conv.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | 15 | extern void * conv_sys_enter(void *, void *); 16 | extern void * conv_sys_exit(void *, void *); 17 | extern void * conv_sched_switch(void *, void *); 18 | extern void * conv_sched_wakeup(void *, void *); 19 | extern void * conv_sched_wakeup_new(void *, void *); 20 | extern void * conv_sched_migrate_task(void *, void *); 21 | extern void * conv_block_rq_issue(void *, void *); 22 | extern void * conv_block_rq_insert(void *, void *); 23 | extern void * conv_block_rq_complete(void *, void *); 24 | extern void * conv_block_rq_requeue(void *, void *); 25 | extern void * conv_block_rq_abort(void *, void *); 26 | extern void * conv_hardclock(void *, void *); 27 | extern void * conv_power_start(void *, void *); 28 | extern void * conv_power_end(void *, void *); 29 | extern void * conv_power_freq(void *, void *); 30 | extern void * conv_cpu_freq(void *, void *); 31 | extern void * conv_cpu_idle(void *, void *); 32 | extern void * conv_irq_handler_entry(void *, void *); 33 | extern void * conv_irq_handler_exit(void *, void *); 34 | extern void * conv_softirq_entry(void *, void *); 35 | extern void * conv_softirq_exit(void *, void *); 36 | extern void * conv_softirq_raise(void *, void *); 37 | extern void * conv_scsi_dispatch_cmd_start(void *, void *); 38 | extern void * conv_scsi_dispatch_cmd_done(void *, void *); 39 | extern void * conv_workqueue_insertion(void *, void *); 40 | extern void * conv_workqueue_execution(void *, void *); 41 | extern void * conv_workqueue_enqueue(void *, void *); 42 | extern void * conv_workqueue_execute(void *, void *); 43 | extern void * conv_anon_fault(void *, void *); 44 | extern void * conv_filemap_fault(void *, void *); 45 | extern void * conv_kernel_pagefault(void *, void *); 46 | extern void * conv_page_fault(void *, void *); 47 | extern void * conv_cache_insert(void *, void *); 48 | extern void * conv_cache_evict(void *, void *); 49 | extern void * conv_mm_page_alloc(void *, void *); 50 | extern void * conv_mm_page_free(void *, void *); 51 | extern char * get_marker_buf(void *); 52 | extern void * conv_common_rec(void *, void *); 53 | -------------------------------------------------------------------------------- /src/kiinfo/futex.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | 15 | /* Futex MACRO definitions */ 16 | #define FUTEX_WAIT 0 17 | #define FUTEX_WAKE 1 18 | #define FUTEX_FD 2 19 | #define FUTEX_REQUEUE 3 20 | #define FUTEX_CMP_REQUEUE 4 21 | #define FUTEX_WAKE_OP 5 22 | #define FUTEX_LOCK_PI 6 23 | #define FUTEX_UNLOCK_PI 7 24 | #define FUTEX_TRYLOCK_PI 8 25 | #define FUTEX_WAIT_BITSET 9 26 | #define FUTEX_WAKE_BITSET 10 27 | #define FUTEX_WAIT_REQUEUE_PI 11 28 | #define FUTEX_CMP_REQUEUE_PI 12 29 | 30 | #define FUTEX_PRIVATE_FLAG 128 31 | #define FUTEX_CLOCK_REALTIME 256 32 | #define FUTEX_CMD_MASK ~(FUTEX_PRIVATE_FLAG | FUTEX_CLOCK_REALTIME) 33 | 34 | #define FUTEX_WAIT_PRIVATE (FUTEX_WAIT | FUTEX_PRIVATE_FLAG) 35 | #define FUTEX_WAKE_PRIVATE (FUTEX_WAKE | FUTEX_PRIVATE_FLAG) 36 | #define FUTEX_REQUEUE_PRIVATE (FUTEX_REQUEUE | FUTEX_PRIVATE_FLAG) 37 | #define FUTEX_CMP_REQUEUE_PRIVATE (FUTEX_CMP_REQUEUE | FUTEX_PRIVATE_FLAG) 38 | #define FUTEX_WAKE_OP_PRIVATE (FUTEX_WAKE_OP | FUTEX_PRIVATE_FLAG) 39 | #define FUTEX_LOCK_PI_PRIVATE (FUTEX_LOCK_PI | FUTEX_PRIVATE_FLAG) 40 | #define FUTEX_UNLOCK_PI_PRIVATE (FUTEX_UNLOCK_PI | FUTEX_PRIVATE_FLAG) 41 | #define FUTEX_TRYLOCK_PI_PRIVATE (FUTEX_TRYLOCK_PI | FUTEX_PRIVATE_FLAG) 42 | #define FUTEX_WAIT_BITSET_PRIVATE (FUTEX_WAIT_BITSET | FUTEX_PRIVATE_FLAG) 43 | #define FUTEX_WAKE_BITSET_PRIVATE (FUTEX_WAKE_BITSET | FUTEX_PRIVATE_FLAG) 44 | #define FUTEX_WAIT_REQUEUE_PI_PRIVATE (FUTEX_WAIT_REQUEUE_PI | FUTEX_PRIVATE_FLAG) 45 | #define FUTEX_CMP_REQUEUE_PI_PRIVATE (FUTEX_CMP_REQUEUE_PI | FUTEX_PRIVATE_FLAG) 46 | 47 | #define IS_REQUEUE(op) (((op & 0xf) == FUTEX_REQUEUE) || ((op & 0xf) == FUTEX_CMP_REQUEUE) \ 48 | || ((op & 0xf) == FUTEX_WAIT_REQUEUE_PI) || ((op & 0xf) == FUTEX_CMP_REQUEUE_PI)) 49 | -------------------------------------------------------------------------------- /src/kiinfo/hardclock.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | 15 | extern int hardclock_func(void *, void *); 16 | extern int hardclock_sched_switch_func(void *, void *); 17 | -------------------------------------------------------------------------------- /src/kiinfo/hash.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | 15 | extern lle_t *find_add_hash_entry (lle_t ***, int, uint64, int, int); 16 | extern lle_t *find_remove_hash_entry (lle_t ***, int, uint64, int, int); 17 | extern strlle_t *find_add_strhash_entry (strlle_t ***, int, int, int, char *, int); 18 | extern stklle_t *find_add_stkhash_entry (stklle_t ***, int, int, int, uint64 *, int); 19 | extern lle_t *find_add_entry (lle_t **, uint64, int, int); 20 | extern lle_t *find_entry (lle_t **, uint64, int); 21 | extern lle_t *add_entry_head (lle_t **, uint64, int); 22 | extern void *find_add_info (void **, int); 23 | extern void foreach_hash_entry(void **, int, int (*funct1)(void *, void*), int (*funct2)(const void *, const void *), int32, void *) ; 24 | extern void foreach_hash_entry_mt(void **, int, int (*funct1)(void *, void*), int (*funct2)(const void *, const void *), int32, void *) ; 25 | extern void foreach_hash_entry_N(void **, int, int (*funct1)(void *, void*), int (*funct2)(const void *, const void *), int32, void *, int, int) ; 26 | extern void foreach_hash_entry_l(void **, int, int (*funct1)(void *, void*), int (*funct2)(const void *, const void *), int32, void *) ; 27 | extern int hash_count_entries (void *, void *); 28 | extern uint64 doobsHash(void *, uint32, uint32); 29 | extern void foreach_server(int (*funct1)(void *, void *), int (*funct2)(const void *, const void *), int32, void *); 30 | 31 | extern lle2_t *find_add_hash_entry2 (lle2_t ***, int, uint64, uint64, int, int); 32 | extern lle2_t *find_entry2 (lle2_t **, uint64, uint64, int); 33 | extern lle2_t *find_add_entry2 (lle2_t **, uint64, uint64, int, int); 34 | extern lle2_t *add_entry_head2 (lle2_t **, uint64, uint64, int); 35 | extern void foreach_hash_entry2(void **, int, int (*funct1)(void *, void*), int (*funct2)(const void *, const void *), int32, void *) ; 36 | extern lle2_t *find_remove_hash_entry2 (lle2_t ***, int, uint64, uint64, int, int); 37 | 38 | extern void free_hash_chain(lle_t *); 39 | extern void free_hash_table(lle_t ***, int); 40 | 41 | int hash_start_worker_threads(); 42 | 43 | -------------------------------------------------------------------------------- /src/kiinfo/html.c: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | 23 | extern char HTML; 24 | 25 | int 26 | BOLD(const char *format, ...) 27 | { 28 | va_list ap; 29 | 30 | va_start(ap, format); 31 | if (HTML) { 32 | printf (""); 33 | vprintf(format, ap); 34 | printf (""); 35 | } else { 36 | vprintf(format, ap); 37 | } 38 | 39 | return 0; 40 | } 41 | 42 | char * 43 | SPF(char *str, const char *format, ...) 44 | { 45 | va_list ap; 46 | va_start(ap, format); 47 | vsprintf(str, format, ap); 48 | return str; 49 | } 50 | -------------------------------------------------------------------------------- /src/kiinfo/irq.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | 15 | extern int irq_handler_entry_func(void *, void *); 16 | extern int irq_handler_exit_func(void *, void *); 17 | extern int softirq_entry_func(void *, void *); 18 | extern int softirq_exit_func(void *, void *); 19 | extern int softirq_raise_func(void *, void *); 20 | extern int call_function_entry_func(void *, void *); 21 | extern int call_function_exit_func(void *, void *); 22 | -------------------------------------------------------------------------------- /src/kiinfo/json.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | 15 | /* MACRO definitions */ 16 | 17 | 18 | #define CHILDREN 0x0001 19 | #define JSON_OBJECT 0x0002 20 | #define JSON_ARRAY 0x0004 21 | 22 | #define JSPARENT 0 23 | #define JSRUNQ 1 24 | #define JSWAITING 2 25 | #define JSRUNNING 3 26 | #define JSRUNNING_USER 4 27 | #define JSRUNNING_SYS 5 28 | #define JSINTR 6 29 | 30 | #define START_OBJ_PRINT(jsname, jstime, jscount, jstype, jsdetail, jslink) json_printf(pid_jsonfile, "\n{\"name\":\"%s\", \"time\":\"%f\", \"count\":\"%d\", \"type\":\"%d\", \"detail\":\"%s\", \"link\":\"%s\"", jsname, jstime, jscount, jstype, jsdetail, jslink); 31 | 32 | #define START_WAKE_OBJ_PRINT(jsname, jstime, jscount, jstype, jsdetail, jslink, jswlink) json_printf(pid_jsonfile, "\n{\"name\":\"%s\", \"time\":\"%f\", \"count\":\"%d\", \"type\":\"%d\", \"detail\":\"%s\", \"link\":\"%s\", \"wlink\":\"%s\"", jsname, jstime, jscount, jstype, jsdetail, jslink, jswlink); 33 | 34 | #define ENDCURR_OBJ_PRINT json_printf(pid_jsonfile, "},"); 35 | 36 | #define ENDLAST_OBJ_PRINT json_printf(pid_jsonfile, "}\n"); 37 | 38 | #define NULL_OBJ_PRINT json_printf(pid_jsonfile, " {}\n"); 39 | 40 | #define ADD_KIDS_PRINT json_printf(pid_jsonfile, ", \"children\": [ \n"); 41 | 42 | #define EMPTY_KIDS_PRINT json_printf(pid_jsonfile, ", \"children\": [] \n"); 43 | 44 | #define END_KIDS_PRINT json_printf(pid_jsonfile, "\n ]"); 45 | 46 | 47 | -------------------------------------------------------------------------------- /src/kiinfo/ki_tool.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | 23 | typedef unsigned char uint8; 24 | typedef unsigned short uint16; 25 | typedef unsigned int uint32; 26 | typedef unsigned long uint64; 27 | 28 | typedef signed char int8; 29 | typedef signed short int16; 30 | typedef signed int int32; 31 | typedef signed long int64; 32 | 33 | #define TRUE 1 34 | #define FALSE 0 35 | #define TRACEMEM_FAIL -1 36 | #define ALL_KERNELTRACES_FAIL -2 37 | #define ALL_SYSCALLTRACES_FAIL -3 38 | #define CLR_SYSCALL_FAIL -4 39 | #define FREE_TRACEMEM_FAIL -5 40 | #define SECS(value) ((value) / 1000000000.0) /* nanoseconds to seconds */ 41 | #define MSECS(value) ((value) / 1000000.0) /* microseconds to seconds */ 42 | #define MiSECS(value) ((value) / 1000.0) /* milliseconds to seconds */ 43 | #define JiSECS(value) ((value) / 100.0) /* Jiffy/centiseconds to seconds */ 44 | #define NSECS(value) ((value)) 45 | #define KI_MAXTRACECALLS 3000 46 | #define LIKI_MAXTRACECALLS 64 47 | #define KI_MAXSYSCALLS 600 48 | 49 | #define MIN(X,Y) ((X) < (Y) ? (X) : (Y)) 50 | #define MAX(X,Y) ((X) > (Y) ? (X) : (Y)) 51 | 52 | /* function prototypes */ 53 | void read_traces (FILE *trcfile); 54 | 55 | 56 | /*globals*/ 57 | extern int debug; 58 | extern struct tm gmt; 59 | extern uint32 _buffer_size; 60 | extern int is_alive; 61 | extern int kilive; 62 | extern int VM_guest; 63 | extern int alarm_secs; 64 | extern FILE *output; 65 | extern char release[]; 66 | extern char hostname[]; 67 | extern char HTML; 68 | extern char update_flag; 69 | extern char *timestamp; 70 | extern char *cmdstr; 71 | extern int Txtfile; 72 | extern char *tool_name; 73 | extern char *tool_version; 74 | -------------------------------------------------------------------------------- /src/kiinfo/kiinfo-rhel6.aarch64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/src/kiinfo/kiinfo-rhel6.aarch64 -------------------------------------------------------------------------------- /src/kiinfo/kiinfo-rhel7_8.ppc64le: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/src/kiinfo/kiinfo-rhel7_8.ppc64le -------------------------------------------------------------------------------- /src/kiinfo/kiinfo-rhel8.ppc64le: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/src/kiinfo/kiinfo-rhel8.ppc64le -------------------------------------------------------------------------------- /src/kiinfo/kiinfo-sles15.ppc64le: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/src/kiinfo/kiinfo-sles15.ppc64le -------------------------------------------------------------------------------- /src/kiinfo/kiinfo-ubuntu18.ppc64le: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/src/kiinfo/kiinfo-ubuntu18.ppc64le -------------------------------------------------------------------------------- /src/kiinfo/kiinfo.rhel6: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/src/kiinfo/kiinfo.rhel6 -------------------------------------------------------------------------------- /src/kiinfo/liki_extra.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | 15 | typedef struct fault_trace { 16 | COMMON_FIELDS; 17 | unsigned long addr; 18 | unsigned long ip; 19 | signed long error_code; 20 | int flag; 21 | } fault_t; 22 | -------------------------------------------------------------------------------- /src/kiinfo/option_private.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | 15 | /* option_private.h 16 | * Authors: Georges Aureau, Peter Hryczanek 17 | */ 18 | 19 | #ifndef _OPTION_PRIVATE_INCLUDED 20 | #define _OPTION_PRIVATE_INCLUDED 21 | 22 | #define BASENAME(name) (strchr(name, '/') ? strrchr(name, '/') + 1 : name) 23 | 24 | /* Funtion Prototypes */ 25 | 26 | static void flag_usage(flag_t *, int); 27 | static flag_t * flag_lookup(flag_t *, char *); 28 | static prop_t * flag_decode(flag_t *, char *); 29 | static prop_t * flags_decode(option_t *, char *); 30 | static int value_decode(char, value_t *, char *); 31 | static arg_t * arg_decode(option_t *, char *); 32 | static action_t * action_add(action_t *, void (*)(), arg_t *); 33 | static option_t * option_lookup(char *, option_t *); 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /src/kiinfo/oracle.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | 15 | extern int oracle_pid_stats(void *, void *); 16 | extern int get_oracle_wait_event(void *, unsigned long *, unsigned int); 17 | extern void update_oracle_wait_event(void *, uint64); 18 | extern void ora_wait_report(void *, void *); 19 | extern void sid_wait_report(void *, void *); 20 | 21 | extern char *oracle_proc[]; 22 | extern char *oracle_procname[]; 23 | extern char *oracle_wait_event[]; 24 | 25 | #define LGWR 0 26 | #define ARCHIVE 1 27 | #define DBWRITER 2 28 | #define SLAVE 3 29 | #define PQUERY 4 30 | #define SHSERV 5 31 | #define JOBQ 6 32 | #define DISPATCHER 7 33 | #define CHECKPT 8 34 | #define PMON 9 35 | #define SMON 10 36 | #define RECOV 11 37 | #define OTHER 14 38 | #define ORACLE 15 39 | #define NORACLE 16 40 | 41 | #define ORA_NONE 0 42 | #define ORA_DB_FILE_SEQ_READ 1 43 | #define ORA_LOG_FILE_SYNC_PWWAIT 2 44 | #define ORA_LOG_FILE_SYNC_POLLING 3 45 | #define ORA_CURSOR_PIN_S 4 46 | #define ORA_NET_FROM_CLIENT 5 47 | #define ORA_NET_FROM_DBLINK 6 48 | #define ORA_ENQ_TX_ROW_LOCK 7 49 | #define ORA_DB_ASYNC_IO 8 50 | #define ORA_LOG_FILE_SWITCH 9 51 | #define ORA_BUFFER_BUSY_WAIT 10 52 | #define ORA_GC_CUR_READ 11 53 | #define ORA_GC_CUR_MB_READ 12 54 | #define ORA_LATCH_CACHE_BUF 13 55 | #define ORA_LATCH_SEQ 14 56 | #define ORA_LATCH_UNDO 15 57 | #define ORA_NEVENTS 16 58 | -------------------------------------------------------------------------------- /src/kiinfo/power.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | 15 | extern int power_start_func(void *, void *); 16 | extern int power_end_func(void *, void *); 17 | extern int power_freq_func(void *, void *); 18 | extern int cpu_freq_func(void *, void *); 19 | extern int cpu_idle_func(void *, void *); 20 | -------------------------------------------------------------------------------- /src/kiinfo/sched.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | 15 | extern int sched_switch_func(void *, void *); 16 | extern int sched_wakeup_func(void *, void *); 17 | extern int trace_sched_migrate_task_func(void *, void *); 18 | extern int sched_switch_thread_names_func(void *, void *); 19 | extern int futex_sched_switch_func(void *, void *); 20 | -------------------------------------------------------------------------------- /src/kiinfo/scsi.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | 15 | extern int scsi_dispatch_cmd_start_func(void *, void *); 16 | extern int scsi_dispatch_cmd_done_func(void *, void *); 17 | -------------------------------------------------------------------------------- /src/kiinfo/syscalls.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | extern int sys_enter_func(void *, void *); 15 | extern int sys_exit_func(void *, void *); 16 | extern int trace_sys_enter_func(void *, void *); 17 | extern int trace_sys_exit_func(void *, void *); 18 | extern int futex_sys_enter_func(void *, void *); 19 | extern int futex_sys_exit_func(void *, void *); 20 | -------------------------------------------------------------------------------- /src/kiinfo/vers.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | char *tool_version="7.11"; 15 | char *tool_name="kiinfo"; 16 | -------------------------------------------------------------------------------- /src/kiinfo/vis.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | 15 | #define TASKID_NODE 1 16 | #define SOCKET_NODE 2 17 | #define RUNQ_NODE 4 18 | #define ICS_TIMER_NODE 8 19 | #define DISK_NODE 16 20 | #define LOCK_NODE 32 21 | #define TASKID_NODE_TGT 64 22 | #define TASKID_NODE_SRC 128 23 | 24 | -------------------------------------------------------------------------------- /src/kiinfo/winki_util.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | 15 | extern int winki_init_actions(int (*func1)(void *, void*)); 16 | extern void winki_enable_event(int id, int (*func1)(void *, void*)); 17 | extern int winki_header_func(void *, void *); 18 | extern void winki_update_sched_state(void *, int, int, uint64); 19 | extern short syscall_addr_to_id(uint64); 20 | extern int dpc_addr_to_idx(uint64); 21 | -------------------------------------------------------------------------------- /src/kiinfo/workqueue.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | Copyright 2017 Hewlett Packard Enterprise Development LP. 3 | This program is free software; you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation; either version 2 of the License, or (at 6 | your option) any later version. This program is distributed in the 7 | hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 9 | PURPOSE. See the GNU General Public License for more details. You 10 | should have received a copy of the GNU General Public License along 11 | with this program; if not, write to the Free Software Foundation, 12 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 | ***************************************************************************/ 14 | extern int workqueue_insertion_func(void *, void *); 15 | extern int workqueue_execution_func(void *, void *); 16 | extern int workqueue_enqueue_func(void *, void *); 17 | extern int workqueue_execute_func(void *, void *); 18 | -------------------------------------------------------------------------------- /winki/convertpdb.cmd: -------------------------------------------------------------------------------- 1 | @for /r %%i in (*.pdb) do .\pdbdump.exe "%%i" >%%~ni.txt 2 | -------------------------------------------------------------------------------- /winki/pdbdump.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HewlettPackard/LinuxKI/8ed9acc09e85f66150cf40b0283f98ff12f0bd37/winki/pdbdump.exe -------------------------------------------------------------------------------- /winki/spin.sql: -------------------------------------------------------------------------------- 1 | IF EXISTS (SELECT * FROM [tempdb].[sys].[objects] 2 | WHERE [name] = N'##TempSpinlockStats1') 3 | DROP TABLE [##TempSpinlockStats1]; 4 | 5 | IF EXISTS (SELECT * FROM [tempdb].[sys].[objects] 6 | WHERE [name] = N'##TempSpinlockStats2') 7 | DROP TABLE [##TempSpinlockStats2]; 8 | GO 9 | 10 | -- Baseline 11 | SELECT * INTO [##TempSpinlockStats1] 12 | FROM sys.dm_os_spinlock_stats 13 | WHERE [collisions] > 0 14 | ORDER BY [name]; 15 | GO 16 | 17 | -- Now wait... 18 | WAITFOR DELAY '00:00:30'; 19 | GO 20 | 21 | -- Capture updated stats 22 | SELECT * INTO [##TempSpinlockStats2] 23 | FROM sys.dm_os_spinlock_stats 24 | WHERE [collisions] > 0 25 | ORDER BY [name]; 26 | GO 27 | 28 | -- Diff them 29 | SELECT 30 | '***' AS [New], 31 | [ts2].[name] AS [Spinlock], 32 | [ts2].[collisions] AS [DiffCollisions], 33 | [ts2].[spins] AS [DiffSpins], 34 | [ts2].[spins_per_collision] AS [SpinsPerCollision], 35 | [ts2].[sleep_time] AS [DiffSleepTime], 36 | [ts2].[backoffs] AS [DiffBackoffs] 37 | FROM [##TempSpinlockStats2] [ts2] 38 | LEFT OUTER JOIN [##TempSpinlockStats1] [ts1] 39 | ON [ts2].[name] = [ts1].[name] 40 | WHERE [ts1].[name] IS NULL 41 | UNION 42 | SELECT 43 | '' AS [New], 44 | [ts2].[name] AS [Spinlock], 45 | [ts2].[collisions] - [ts1].[collisions] AS [DiffCollisions], 46 | [ts2].[spins] - [ts1].[spins] AS [DiffSpins], 47 | CASE ([ts2].[spins] - [ts1].[spins]) WHEN 0 THEN 0 48 | ELSE ([ts2].[spins] - [ts1].[spins]) / 49 | ([ts2].[collisions] - [ts1].[collisions]) END 50 | AS [SpinsPerCollision], 51 | [ts2].[sleep_time] - [ts1].[sleep_time] AS [DiffSleepTime], 52 | [ts2].[backoffs] - [ts1].[backoffs] AS [DiffBackoffs] 53 | FROM [##TempSpinlockStats2] [ts2] 54 | LEFT OUTER JOIN [##TempSpinlockStats1] [ts1] 55 | ON [ts2].[name] = [ts1].[name] 56 | WHERE [ts1].[name] IS NOT NULL 57 | AND [ts2].[collisions] - [ts1].[collisions] > 0 58 | ORDER BY [New] DESC, [DiffSpins] DESC; 59 | GO 60 | -------------------------------------------------------------------------------- /winki/waits.sql: -------------------------------------------------------------------------------- 1 | DBCC SQLPERF (N'sys.dm_os_wait_stats', CLEAR); 2 | GO 3 | WAITFOR DELAY '00:00:30' 4 | GO 5 | WITH [Waits] AS 6 | (SELECT 7 | [wait_type], 8 | [wait_time_ms] / 1000.0 AS [WaitS], 9 | ([wait_time_ms] - [signal_wait_time_ms]) / 1000.0 AS [ResourceS], 10 | [signal_wait_time_ms] / 1000.0 AS [SignalS], 11 | [waiting_tasks_count] AS [WaitCount], 12 | 100.0 * [wait_time_ms] / SUM ([wait_time_ms]) OVER() AS [Percentage], 13 | ROW_NUMBER() OVER(ORDER BY [wait_time_ms] DESC) AS [RowNum] 14 | FROM sys.dm_os_wait_stats 15 | WHERE [wait_type] NOT IN ( 16 | N'BROKER_EVENTHANDLER', N'BROKER_RECEIVE_WAITFOR', N'SOS_WORK_DISPATCHER') 17 | 18 | AND [waiting_tasks_count] > 0 19 | ) 20 | SELECT 21 | MAX ([W1].[wait_type]) AS [WaitType], 22 | CAST (MAX ([W1].[WaitS]) AS DECIMAL (16,2)) AS [Wait_S], 23 | CAST (MAX ([W1].[ResourceS]) AS DECIMAL (16,2)) AS [Resource_S], 24 | CAST (MAX ([W1].[SignalS]) AS DECIMAL (16,2)) AS [Signal_S], 25 | MAX ([W1].[WaitCount]) AS [WaitCount], 26 | CAST (MAX ([W1].[Percentage]) AS DECIMAL (5,2)) AS [Percentage], 27 | CAST ((MAX ([W1].[WaitS]) / MAX ([W1].[WaitCount])) AS DECIMAL (16,4)) AS [AvgWait_S], 28 | CAST ((MAX ([W1].[ResourceS]) / MAX ([W1].[WaitCount])) AS DECIMAL (16,4)) AS [AvgRes_S], 29 | CAST ((MAX ([W1].[SignalS]) / MAX ([W1].[WaitCount])) AS DECIMAL (16,4)) AS [AvgSig_S] 30 | 31 | FROM [Waits] AS [W1] 32 | INNER JOIN [Waits] AS [W2] 33 | ON [W2].[RowNum] <= [W1].[RowNum] 34 | GROUP BY [W1].[RowNum] 35 | HAVING SUM ([W2].[Percentage]) - MAX( [W1].[Percentage] ) < 99.8; -- percentage threshold 36 | GO 37 | --------------------------------------------------------------------------------