@cryptotaxi247 / netdata-1 / commits / d40b5cbec

feat(collectors/cgroups): prefer `blkio.*_recursive` when available (#12462)

Ilya Mashchenko committed Mar 21, 2022 at 14:20 UTC d40b5cbec63d57f4d88fadb6c1abc08499924626
1 file changed +85 -36
collectors/cgroups.plugin/sys_fs_cgroup.c
+85 -36
@@ -403,7 +403,7 @@ void read_cgroup_plugin_configuration() {
403 " !*.user "
404 " !/ "
405 " !/docker "
406 - " !/libvirt "
406 + " !*/libvirt "
407 " !/lxc "
408 " !/lxc/*/* " // #1397 #2649
409 " !/lxc.monitor* "
@@ -1900,69 +1900,118 @@ static inline void update_filenames()
1900 }
1901
1902 if(unlikely(cgroup_enable_blkio_io && !cg->io_service_bytes.filename)) {
1903 - snprintfz(filename, FILENAME_MAX, "%s%s/blkio.io_service_bytes", cgroup_blkio_base, cg->id);
1904 - if(likely(stat(filename, &buf) != -1)) {
1903 + snprintfz(filename, FILENAME_MAX, "%s%s/blkio.io_service_bytes_recursive", cgroup_blkio_base, cg->id);
1904 + if (unlikely(stat(filename, &buf) != -1)) {
1905 cg->io_service_bytes.filename = strdupz(filename);
1906 cg->io_service_bytes.enabled = cgroup_enable_blkio_io;
1907 - debug(D_CGROUP, "io_service_bytes filename for cgroup '%s': '%s'", cg->id, cg->io_service_bytes.filename);
1907 + debug(D_CGROUP, "blkio.io_service_bytes_recursive filename for cgroup '%s': '%s'", cg->id, cg->io_service_bytes.filename);
1908 + } else {
1909 + debug(D_CGROUP, "blkio.io_service_bytes_recursive file for cgroup '%s': '%s' does not exist.", cg->id, filename);
1910 + snprintfz(filename, FILENAME_MAX, "%s%s/blkio.io_service_bytes", cgroup_blkio_base, cg->id);
1911 + if (likely(stat(filename, &buf) != -1)) {
1912 + cg->io_service_bytes.filename = strdupz(filename);
1913 + cg->io_service_bytes.enabled = cgroup_enable_blkio_io;
1914 + debug(D_CGROUP, "blkio.io_service_bytes filename for cgroup '%s': '%s'", cg->id, cg->io_service_bytes.filename);
1915 + } else {
1916 + debug(D_CGROUP, "blkio.io_service_bytes file for cgroup '%s': '%s' does not exist.", cg->id, filename);
1917 + }
1918 }
1909 - else
1910 - debug(D_CGROUP, "io_service_bytes file for cgroup '%s': '%s' does not exist.", cg->id, filename);
1919 }
1920
1913 - if(unlikely(cgroup_enable_blkio_ops && !cg->io_serviced.filename)) {
1914 - snprintfz(filename, FILENAME_MAX, "%s%s/blkio.io_serviced", cgroup_blkio_base, cg->id);
1915 - if(likely(stat(filename, &buf) != -1)) {
1921 + if (unlikely(cgroup_enable_blkio_ops && !cg->io_serviced.filename)) {
1922 + snprintfz(filename, FILENAME_MAX, "%s%s/blkio.io_serviced_recursive", cgroup_blkio_base, cg->id);
1923 + if (unlikely(stat(filename, &buf) != -1)) {
1924 cg->io_serviced.filename = strdupz(filename);
1925 cg->io_serviced.enabled = cgroup_enable_blkio_ops;
1918 - debug(D_CGROUP, "io_serviced filename for cgroup '%s': '%s'", cg->id, cg->io_serviced.filename);
1926 + debug(D_CGROUP, "blkio.io_serviced_recursive filename for cgroup '%s': '%s'", cg->id, cg->io_serviced.filename);
1927 + } else {
1928 + debug(D_CGROUP, "blkio.io_serviced_recursive file for cgroup '%s': '%s' does not exist.", cg->id, filename);
1929 + snprintfz(filename, FILENAME_MAX, "%s%s/blkio.io_serviced", cgroup_blkio_base, cg->id);
1930 + if (likely(stat(filename, &buf) != -1)) {
1931 + cg->io_serviced.filename = strdupz(filename);
1932 + cg->io_serviced.enabled = cgroup_enable_blkio_ops;
1933 + debug(D_CGROUP, "blkio.io_serviced filename for cgroup '%s': '%s'", cg->id, cg->io_serviced.filename);
1934 + } else {
1935 + debug(D_CGROUP, "blkio.io_serviced file for cgroup '%s': '%s' does not exist.", cg->id, filename);
1936 + }
1937 }
1920 - else
1921 - debug(D_CGROUP, "io_serviced file for cgroup '%s': '%s' does not exist.", cg->id, filename);
1938 }
1939
1924 - if(unlikely(cgroup_enable_blkio_throttle_io && !cg->throttle_io_service_bytes.filename)) {
1925 - snprintfz(filename, FILENAME_MAX, "%s%s/blkio.throttle.io_service_bytes", cgroup_blkio_base, cg->id);
1926 - if(likely(stat(filename, &buf) != -1)) {
1940 + if (unlikely(cgroup_enable_blkio_throttle_io && !cg->throttle_io_service_bytes.filename)) {
1941 + snprintfz(filename, FILENAME_MAX, "%s%s/blkio.throttle.io_service_bytes_recursive", cgroup_blkio_base, cg->id);
1942 + if (unlikely(stat(filename, &buf) != -1)) {
1943 cg->throttle_io_service_bytes.filename = strdupz(filename);
1944 cg->throttle_io_service_bytes.enabled = cgroup_enable_blkio_throttle_io;
1929 - debug(D_CGROUP, "throttle_io_service_bytes filename for cgroup '%s': '%s'", cg->id, cg->throttle_io_service_bytes.filename);
1945 + debug(D_CGROUP,"blkio.throttle.io_service_bytes_recursive filename for cgroup '%s': '%s'", cg->id, cg->throttle_io_service_bytes.filename);
1946 + } else {
1947 + debug(D_CGROUP, "blkio.throttle.io_service_bytes_recursive file for cgroup '%s': '%s' does not exist.", cg->id, filename);
1948 + snprintfz(
1949 + filename, FILENAME_MAX, "%s%s/blkio.throttle.io_service_bytes", cgroup_blkio_base, cg->id);
1950 + if (likely(stat(filename, &buf) != -1)) {
1951 + cg->throttle_io_service_bytes.filename = strdupz(filename);
1952 + cg->throttle_io_service_bytes.enabled = cgroup_enable_blkio_throttle_io;
1953 + debug(D_CGROUP, "blkio.throttle.io_service_bytes filename for cgroup '%s': '%s'", cg->id, cg->throttle_io_service_bytes.filename);
1954 + } else {
1955 + debug(D_CGROUP, "blkio.throttle.io_service_bytes file for cgroup '%s': '%s' does not exist.", cg->id, filename);
1956 + }
1957 }
1931 - else
1932 - debug(D_CGROUP, "throttle_io_service_bytes file for cgroup '%s': '%s' does not exist.", cg->id, filename);
1958 }
1959
1935 - if(unlikely(cgroup_enable_blkio_throttle_ops && !cg->throttle_io_serviced.filename)) {
1936 - snprintfz(filename, FILENAME_MAX, "%s%s/blkio.throttle.io_serviced", cgroup_blkio_base, cg->id);
1937 - if(likely(stat(filename, &buf) != -1)) {
1960 + if (unlikely(cgroup_enable_blkio_throttle_ops && !cg->throttle_io_serviced.filename)) {
1961 + snprintfz(filename, FILENAME_MAX, "%s%s/blkio.throttle.io_serviced_recursive", cgroup_blkio_base, cg->id);
1962 + if (unlikely(stat(filename, &buf) != -1)) {
1963 cg->throttle_io_serviced.filename = strdupz(filename);
1964 cg->throttle_io_serviced.enabled = cgroup_enable_blkio_throttle_ops;
1940 - debug(D_CGROUP, "throttle_io_serviced filename for cgroup '%s': '%s'", cg->id, cg->throttle_io_serviced.filename);
1965 + debug(D_CGROUP, "blkio.throttle.io_serviced_recursive filename for cgroup '%s': '%s'", cg->id, cg->throttle_io_serviced.filename);
1966 + } else {
1967 + debug(D_CGROUP, "blkio.throttle.io_serviced_recursive file for cgroup '%s': '%s' does not exist.", cg->id, filename);
1968 + snprintfz(filename, FILENAME_MAX, "%s%s/blkio.throttle.io_serviced", cgroup_blkio_base, cg->id);
1969 + if (likely(stat(filename, &buf) != -1)) {
1970 + cg->throttle_io_serviced.filename = strdupz(filename);
1971 + cg->throttle_io_serviced.enabled = cgroup_enable_blkio_throttle_ops;
1972 + debug(D_CGROUP, "blkio.throttle.io_serviced filename for cgroup '%s': '%s'", cg->id, cg->throttle_io_serviced.filename);
1973 + } else {
1974 + debug(D_CGROUP, "blkio.throttle.io_serviced file for cgroup '%s': '%s' does not exist.", cg->id, filename);
1975 + }
1976 }
1942 - else
1943 - debug(D_CGROUP, "throttle_io_serviced file for cgroup '%s': '%s' does not exist.", cg->id, filename);
1977 }
1978
1946 - if(unlikely(cgroup_enable_blkio_merged_ops && !cg->io_merged.filename)) {
1947 - snprintfz(filename, FILENAME_MAX, "%s%s/blkio.io_merged", cgroup_blkio_base, cg->id);
1948 - if(likely(stat(filename, &buf) != -1)) {
1979 + if (unlikely(cgroup_enable_blkio_merged_ops && !cg->io_merged.filename)) {
1980 + snprintfz(filename, FILENAME_MAX, "%s%s/blkio.io_merged_recursive", cgroup_blkio_base, cg->id);
1981 + if (unlikely(stat(filename, &buf) != -1)) {
1982 cg->io_merged.filename = strdupz(filename);
1983 cg->io_merged.enabled = cgroup_enable_blkio_merged_ops;
1951 - debug(D_CGROUP, "io_merged filename for cgroup '%s': '%s'", cg->id, cg->io_merged.filename);
1984 + debug(D_CGROUP, "blkio.io_merged_recursive filename for cgroup '%s': '%s'", cg->id, cg->io_merged.filename);
1985 + } else {
1986 + debug(D_CGROUP, "blkio.io_merged_recursive file for cgroup '%s': '%s' does not exist.", cg->id, filename);
1987 + snprintfz(filename, FILENAME_MAX, "%s%s/blkio.io_merged", cgroup_blkio_base, cg->id);
1988 + if (likely(stat(filename, &buf) != -1)) {
1989 + cg->io_merged.filename = strdupz(filename);
1990 + cg->io_merged.enabled = cgroup_enable_blkio_merged_ops;
1991 + debug(D_CGROUP, "blkio.io_merged filename for cgroup '%s': '%s'", cg->id, cg->io_merged.filename);
1992 + } else {
1993 + debug(D_CGROUP, "blkio.io_merged file for cgroup '%s': '%s' does not exist.", cg->id, filename);
1994 + }
1995 }
1953 - else
1954 - debug(D_CGROUP, "io_merged file for cgroup '%s': '%s' does not exist.", cg->id, filename);
1996 }
1997
1957 - if(unlikely(cgroup_enable_blkio_queued_ops && !cg->io_queued.filename)) {
1958 - snprintfz(filename, FILENAME_MAX, "%s%s/blkio.io_queued", cgroup_blkio_base, cg->id);
1959 - if(likely(stat(filename, &buf) != -1)) {
1998 + if (unlikely(cgroup_enable_blkio_queued_ops && !cg->io_queued.filename)) {
1999 + snprintfz(filename, FILENAME_MAX, "%s%s/blkio.io_queued_recursive", cgroup_blkio_base, cg->id);
2000 + if (unlikely(stat(filename, &buf) != -1)) {
2001 cg->io_queued.filename = strdupz(filename);
2002 cg->io_queued.enabled = cgroup_enable_blkio_queued_ops;
1962 - debug(D_CGROUP, "io_queued filename for cgroup '%s': '%s'", cg->id, cg->io_queued.filename);
2003 + debug(D_CGROUP, "blkio.io_queued_recursive filename for cgroup '%s': '%s'", cg->id, cg->io_queued.filename);
2004 + } else {
2005 + debug(D_CGROUP, "blkio.io_queued_recursive file for cgroup '%s': '%s' does not exist.", cg->id, filename);
2006 + snprintfz(filename, FILENAME_MAX, "%s%s/blkio.io_queued", cgroup_blkio_base, cg->id);
2007 + if (likely(stat(filename, &buf) != -1)) {
2008 + cg->io_queued.filename = strdupz(filename);
2009 + cg->io_queued.enabled = cgroup_enable_blkio_queued_ops;
2010 + debug(D_CGROUP, "blkio.io_queued filename for cgroup '%s': '%s'", cg->id, cg->io_queued.filename);
2011 + } else {
2012 + debug(D_CGROUP, "blkio.io_queued file for cgroup '%s': '%s' does not exist.", cg->id, filename);
2013 + }
2014 }
1964 - else
1965 - debug(D_CGROUP, "io_queued file for cgroup '%s': '%s' does not exist.", cg->id, filename);
2015 }
2016 }
2017 else if(likely(cgroup_unified_exist)) {