From: Ann Koehler Date: Thu, 20 Jun 2019 18:25:02 +0000 (-0500) Subject: LU-12461 contrib: Add epython scripts for crash dump analysis X-Git-Tag: 2.13.53~242 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=4249b02f5c4c8a14faa0b88479b8eac75b212617;hp=0cc48c4adbe540f8e529f80e4262b6ff47649e7c LU-12461 contrib: Add epython scripts for crash dump analysis This mod creates a new subdirectory, debug_tools/epython_scripts, in ./contrib to contain PyKdump scripts. These scripts written in an extended version of Python aid in memory dump analysis by extracting and formatting the content of Lustre data structures. The scripts are written using Python 2.7 and tested on Lustre 2.11 client dumps. Test-Parameters: trivial Cray-bug-id: LUS-7501 Signed-off-by: Ann Koehler Change-Id: I0a15eb9025fb604742f4ae99508a080ce04163dc Reviewed-on: https://review.whamcloud.com/35282 Reviewed-by: Andrew Perepechko Reviewed-by: Shaun Tancheff Tested-by: jenkins Tested-by: Maloo Reviewed-by: Oleg Drokin --- diff --git a/contrib/debug_tools/epython_scripts/README b/contrib/debug_tools/epython_scripts/README new file mode 100644 index 0000000..d33af91 --- /dev/null +++ b/contrib/debug_tools/epython_scripts/README @@ -0,0 +1,37 @@ +These epython scripts extract the content of various Lustre data +structures from crash dumps and formats the output for readability. +They are written for use with PyKdump, a framework for using Python +as an extension language for the crash tool. + +Documentation and source for PyKdump are available at: + https://sourceforge.net/p/pykdump/wiki/Home/ + +These scripts are written in Python2. The above wiki page has instructions +for converting to Python3. The language extensions are documented in: + https://sourceforge.net/p/pykdump/code/ci/master/tree/docs/pykdump.lyx + +The scripts were tested with Lustre 2.11, primarily with dumps of client +nodes. The scripts will work with server dumps as long as the data +structures match the ones used on clients. + +Summary of scripts: + * cfs_hashes.py Displays summary of cfs_hash tables. + * cfs_hnodes.py Displays the specified Lustre hash table. + * debug_flags.py Prints Lustre libcfs_debug flags as strings. + * dk.py Dumps and sorts the Lustre dk logs. + * jiffies2date.py Prints the date and time of a given jiffies timestamp. + * ldlm_dumplocks.py Lists granted and waiting locks by namespace/resource. + * ldlm_lockflags.py Prints string identifiers for specified LDLM flags. + * lu_object.py Prints contents of an lu_object. + * lustre_opcode.py Maps Lustre rpc opcodes to string identifiers. + * obd_devs.py Displays the contents of global 'obd_devs'. + * ptlrpc.py Displays the RPC queues of the Lustre ptlrpcd daemons. + * rpc_stats.py Dumps the client_obd structure given by client argument. + * sbi_ptrs.py Prints Lustre structs associated with inode. + * uniqueStacktrace.py Prints stack traces for each task. + +The scripts require symbols from the Lustre and LNet modules to be loaded +(mod command in crash). A script is invoked with the command +"epython