[PATCH] eal: support including mapped memory in core dump

Stephen Hemminger stephen at networkplumber.org
Thu Oct 24 04:31:20 CEST 2024


On Thu, 24 Oct 2024 02:18:59 +0300
Dmitry Kozlyuk <dmitry.kozliuk at gmail.com> wrote:

> --- a/lib/eal/common/eal_internal_cfg.h
> +++ b/lib/eal/common/eal_internal_cfg.h
> @@ -103,6 +103,8 @@ struct internal_config {
>  	struct simd_bitwidth max_simd_bitwidth;
>  	/**< max simd bitwidth path to use */
>  	size_t huge_worker_stack_size; /**< worker thread stack size */
> +	/** True to include mapped hugepages in coredump. */
> +	unsigned int huge_dump;

No need to waste 4 bytes for a flag.
Find an existing one byte hole and use that.

struct internal_config {
	volatile size_t            memory;               /*     0     8 */
	volatile unsigned int      force_nchannel;       /*     8     4 */
	volatile unsigned int      force_nrank;          /*    12     4 */
	volatile unsigned int      no_hugetlbfs;         /*    16     4 */
	struct hugepage_file_discipline hugepage_file;   /*    20     2 */

	/* XXX 2 bytes hole, try to pack */

	volatile unsigned int      no_pci;               /*    24     4 */
	volatile unsigned int      no_hpet;              /*    28     4 */
	volatile unsigned int      vmware_tsc_map;       /*    32     4 */
	volatile unsigned int      no_shconf;            /*    36     4 */
	volatile unsigned int      in_memory;            /*    40     4 */
	volatile unsigned int      create_uio_dev;       /*    44     4 */
	volatile enum rte_proc_type_t  process_type;     /*    48     4 */
	volatile unsigned int      force_sockets;        /*    52     4 */
	volatile volatile uint64_t   socket_mem;         /*    56   256 */
	/* --- cacheline 4 boundary (256 bytes) was 56 bytes ago --- */
	volatile unsigned int      force_socket_limits;  /*   312     4 */

	/* XXX 4 bytes hole, try to pack */

	/* --- cacheline 5 boundary (320 bytes) --- */
	volatile volatile uint64_t   socket_limit;       /*   320   256 */
	/* --- cacheline 9 boundary (576 bytes) --- */
	uintptr_t                  base_virtaddr;        /*   576     8 */
	volatile unsigned int      legacy_mem;           /*   584     4 */
	volatile unsigned int      match_allocations;    /*   588     4 */
	volatile unsigned int      single_file_segments; /*   592     4 */
	volatile int               syslog_facility;      /*   596     4 */
	volatile enum rte_intr_mode  vfio_intr_mode;     /*   600     4 */
	rte_uuid_t                 vfio_vf_token;        /*   604    16 */

	/* XXX 4 bytes hole, try to pack */

	char *                     hugefile_prefix;      /*   624     8 */
	char *                     hugepage_dir;         /*   632     8 */
	/* --- cacheline 10 boundary (640 bytes) --- */
	char *                     user_mbuf_pool_ops_name; /*   640     8 */
	unsigned int               num_hugepage_sizes;   /*   648     4 */

	/* XXX 4 bytes hole, try to pack */

	struct hugepage_info       hugepage_info[3];     /*   656 12720 */
	/* --- cacheline 209 boundary (13376 bytes) --- */
	enum rte_iova_mode         iova_mode;            /* 13376     4 */

	/* XXX 4 bytes hole, try to pack */

	rte_cpuset_t               ctrl_cpuset;          /* 13384   128 */
	/* --- cacheline 211 boundary (13504 bytes) was 8 bytes ago --- */
	volatile unsigned int      init_complete;        /* 13512     4 */
	unsigned int               no_telemetry;         /* 13516     4 */
	struct simd_bitwidth       max_simd_bitwidth;    /* 13520     4 */

	/* XXX last struct has 1 hole */
	/* XXX 4 bytes hole, try to pack */

	size_t                     huge_worker_stack_size; /* 13528     8 */

	/* size: 13536, cachelines: 212, members: 34 */
	/* sum members: 13514, holes: 6, sum holes: 22 */
	/* member types with holes: 1, total: 1 */
	/* last cacheline: 32 bytes */
};


More information about the dev mailing list