1
0
Fork 0
mirror of https://github.com/kubernetes-sigs/node-feature-discovery.git synced 2024-12-14 11:57:51 +00:00
Commit graph

94 commits

Author SHA1 Message Date
Kubernetes Prow Robot
e0d700d378
Merge pull request #463 from bfournie/new_cpu_features
Support for additional cpu features
2021-03-11 07:30:21 -08:00
Bob Fournier
a65f73e834 Support for additional cpu features
This adds additional cpu features:
- pstate status from status of intel_pstate driver
- pstate scaling settings from scaling_governor
- cstate enable from max_cstates in intel_idle driver
2021-03-05 13:15:49 -05:00
Kubernetes Prow Robot
f8ad566e91
Merge pull request #459 from marquiz/fixes/cleanup
source: drop stale BoolFeatureValue type
2021-03-01 08:17:26 -08:00
Carlos Eduardo Arango Gutierrez
389a8f87cf
logging: start log messages with lower case
Standarize logs to be lower case.

Signed-off-by: Carlos Eduardo Arango Gutierrez <carangog@redhat.com>
2021-03-01 10:07:21 -05:00
Markus Lehtonen
1f819173d0 source: drop stale BoolFeatureValue type 2021-03-01 13:51:04 +02:00
Markus Lehtonen
5e6f0779e9 nfd-worker: stop masking crashes in feature discovery
The code should be stable enough. If there are fatal bugs causing the
discovery to panic/segfault that should be made visible instead of
semi-siently hiding it. Also, this caused one (negative) test case to
fail undetected which is now fixed.
2021-03-01 09:14:19 +02:00
Markus Lehtonen
7da7fde8f6 nfd-worker: switch to klog
Greatly expands logging capabilities and flexibility with verbosity
options, among other things.
2021-02-25 16:10:43 +02:00
Marc Sluiter
7038e49d02
source/custom: Add nodename rule
There are cases when the only available metadata for discovering
features is the node's name. The "nodename" rule extends the custom
source and matches when the node's name matches one of the given
nodename regexp patterns.
It is also possible now to set an optional "value" on custom rules,
which overrides the default "true" label value in case the rule matches.
In order to allow more dynamic configurations without having to modify
the complete worker configuration, custom rules are additionally read
from a "custom.d" directory now. Typically that directory will be filled
by mounting one or more ConfigMaps.

Signed-off-by: Marc Sluiter <msluiter@redhat.com>
2021-02-24 16:26:35 +01:00
Markus Lehtonen
278ccdb997 source/fake: make the fake source configurable
Enables more flexible testing.
2021-02-17 21:50:58 +02:00
Mikko Ylinen
07bc50d5a8 go.mod: update to klauspost/cpuid/v2@v2.02
Signed-off-by: Mikko Ylinen <mikko.ylinen@intel.com>
2020-12-15 15:56:15 +02:00
Mikko Ylinen
94f49b9418 go.mod: update klauspost/cpuid
The latest changes in klauspost/cpuid add detection for Sapphire Rapids
new instructions.

Signed-off-by: Mikko Ylinen <mikko.ylinen@intel.com>
2020-11-30 19:04:41 +02:00
Markus Lehtonen
ba4ecfe7dc kernel: more agressively sanitize full kernel version
Trim illegal characters from the beginning and end of the kernel version
string. Label values must start and end with an alphanumeric and we want
to have some 'version.full' label, even if a sanitized one.
2020-11-23 19:04:12 +02:00
Mikko Ylinen
e2ee7c6fca source/custom: add rules for cpuid and kconfig
Signed-off-by: Mikko Ylinen <mikko.ylinen@intel.com>
2020-09-14 12:07:35 +03:00
Mikko Ylinen
d1cce3ba29 source/custom: do not return on rule errors
Skip to the next rule instead of returning immediately on
rule errors. For instance, if the static rules failed, user
provided rules would never be processed.

Signed-off-by: Mikko Ylinen <mikko.ylinen@intel.com>
2020-09-14 12:07:35 +03:00
Mikko Ylinen
8b156d49fc source/kernel: add internal helper to get kernel version
Signed-off-by: Mikko Ylinen <mikko.ylinen@intel.com>
2020-09-14 12:07:35 +03:00
Mikko Ylinen
aeb7583315 source/kernel: move kconfig to a shared internal package
Signed-off-by: Mikko Ylinen <mikko.ylinen@intel.com>
2020-09-14 12:07:33 +03:00
Mikko Ylinen
3fd314b600 source/kernel: add more search paths
Signed-off-by: Mikko Ylinen <mikko.ylinen@intel.com>
2020-09-14 12:06:23 +03:00
Mikko Ylinen
109da6c980 source/cpu: move cpuid code to a shared internal package
Signed-off-by: Mikko Ylinen <mikko.ylinen@intel.com>
2020-09-14 10:32:04 +03:00
Kubernetes Prow Robot
59a88b07e1
Merge pull request #322 from adaptant-labs/cpuid-arm
cpu: Add support for ARM/Aarch32 cpuid
2020-05-24 23:35:11 -07:00
Paul Mundt
4d5b5974df cpu: Add support for ARM/Aarch32 cpuid
This provides support for 32-bit ARM cpuid capabilities based on
the HWCAP flags, and enables the build of NFD on the 32-bit ARM
userland - notably, this also applies to ARM64 systems that are
running userspace in Aarch32 mode, which is where this problem
was first encountered.

Signed-off-by: Paul Mundt <paul.mundt@adaptant.io>
2020-05-21 19:42:44 +02:00
Markus Lehtonen
d216fca1c0 source/network: run discovery under host sysfs
Instead of relying on golang "net" package, use the configured host
sysfs for all discovery. No need to use hostNetwork after that so drop
it from the worker deployment templates.
2020-05-21 20:33:30 +03:00
Markus Lehtonen
a2b9df5cd3 nfd-worker: rework configuration handling
Extend the FeatureSource interface with new methods for configuration
handling. This enables easier on-the fly reconfiguration of the
feature sources. Further, it simplifies adding config support to feature
sources in the future. Stub methods are added to sources that do not
currently have any configurability.

The patch fixes some (corner) cases with the overrides (--options)
handling, too:
- Overrides were not applied if config file was missing or its parsing
  failed
- Overrides for a certain source did not have effect if an empty config
  for the source was specified in the config file. This was caused by
  the first pass of parsing (config file) setting a nil pointer to the
  source-specific config, effectively detaching it from the main config.
  The second pass would then create a new instance of the source
  specific config, but, this was not visible in the feature source, of
  course.
2020-05-21 00:59:37 +03:00
Markus Lehtonen
67d7887949 source: perform all sysfs discovery under host sysfs
Be consistent and do all sysfs based feature discovery under the same
sysfs directory.
2020-05-20 22:15:41 +03:00
Markus Lehtonen
248859c64d source: parametrise host directory paths
Specify and handle system paths we use for discovery in a unified way.
2020-05-20 22:15:41 +03:00
Markus Lehtonen
640dc9fbf3 source: miscellaneous lint fixes 2020-05-20 21:48:06 +03:00
Markus Lehtonen
057f31d7e3 fsource/local: lint fixes 2020-05-20 21:48:06 +03:00
Markus Lehtonen
a65d05bd9c source/panic_fake: rename module to make lint happy 2020-05-20 21:48:06 +03:00
Markus Lehtonen
80becea590 source/custom: make linter happy
Might not agree with all that naming arbitrariness but it's easier just
to bend over.
2020-05-20 21:48:06 +03:00
Kubernetes Prow Robot
67b3da2f31
Merge pull request #314 from marquiz/devel/gofmt
Check gofmt
2020-05-20 09:42:19 -07:00
Kubernetes Prow Robot
1ba75bfd7c
Merge pull request #310 from adaptant-labs/usb-discovery
Add support for USB device discovery
2020-05-20 08:26:19 -07:00
Paul Mundt
c0ea69411b usb: Add support for USB device discovery
This builds on the PCI support to enable the discovery of USB devices.

This is primarily intended to be used for the discovery of Edge-based
heterogeneous accelerators that are connected via USB, such as the Coral
USB Accelerator and the Intel NCS2 - our main motivation for adding this
capability to NFD, and as part of our work in the SODALITE H2020
project.

USB devices may define their base class at either the device or
interface levels. In the case where no device class is set, the
per-device interfaces are enumerated instead. USB devices may
furthermore have multiple interfaces, which may or may not use the
identical class across each interface. We therefore report device
existence for each unique class definition to enable more fine-grained
labelling and node selection.

The default labelling format includes the class, vendor and device
(product) IDs, as follows:

	feature.node.kubernetes.io/usb-fe_1a6e_089a.present=true

As with PCI, a subset of device classes are whitelisted for matching.
By default, there are only a subset of device classes under which
accelerators tend to be mapped, which is used as the basis for
the whitelist. These are:

	- Video
	- Miscellaneous
	- Application Specific
	- Vendor Specific

For those interested in matching other classes, this may be extended
by using the UsbId rule provided through the custom source. A full
list of class codes is provided by the USB-IF at:

	https://www.usb.org/defined-class-codes

For the moment, owing to a lack of a demonstrable use case, neither
the subclass nor the protocol information are exposed. If this
becomes necessary, support for these attributes can be trivially
added.

Signed-off-by: Paul Mundt <paul.mundt@adaptant.io>
2020-05-20 16:18:39 +02:00
Markus Lehtonen
1a2f54367e source/cpu: mangle through gofmt 2020-05-19 14:28:07 +03:00
Pablo Rodriguez
3c81ff9d80 kernel.go: Replace forbidden symbols
Some Kernel versions include symbols such as "+".
Yocto L4T kernel is an example of this behaviour.
To fix this error all unknown symbols are replaced by an underscore.

Signed-off-by: Pablo Rodriguez <paroque28@gmail.com>
2020-05-15 17:58:08 +00:00
Kubernetes Prow Robot
b8a7a6c927
Merge pull request #299 from marquiz/devel/os-release
source/system: do not publish empty version labels
2020-04-23 05:45:45 -07:00
Markus Lehtonen
674c9f71ed source/cpu: drop leftover debug print 2020-04-22 21:29:19 +03:00
Markus Lehtonen
fbf0b07525 source/custom: gofmt fix 2020-04-22 21:28:02 +03:00
Markus Lehtonen
9eb98040e9 source/system: do not publish empty version labels
Do not publish non-existing version components as empty labels.
2020-03-20 10:16:01 +02:00
Adrian Chiris
e4e3a9f68e Implement the 'custom' feature Source
- Implement the 'custom' feature source utilizing the
  match rules implemented in previous commit.

- Add a static custom feature list for:
  1. rdma.capable - marks a node where devices that support
     RDMA are present.
  2. rdma.enabled - marks a node where rdma modules have
     been loaded.
  A user may extend these features with additional match rules via
  NFD configuration file.
2020-03-19 09:31:59 +02:00
Adrian Chiris
b9ab93559b Add Match Rules package to be used in Custom Source
- Add a Rule interface to help describe the contract
  between a match rule and the Custom source that uses it.

- Add PciIdRule - a rule that matches on the PCI attributes:
  class, vendor, device. Each is provided as a list of elements(strings).
  Match operation: OR will be performed per element and AND will be
  performed per attribute.
  An empty attribute will not be included in the matching process.
  Example:
  {
    "class": ["0200"]
    "vendor": ["15b3"]
    "device": ["1014", "1016"]
  }

- Add LoadedKmodRule - a rule that matches a list of kernel
  modules with the kernel modules currently loaded in the node.
  Example:
  {
    ["rdma_cm", "ib_core"]
  }
2020-03-17 18:00:05 +02:00
Adrian Chiris
0cfe03012b Add new feature Source - Custom with stubbed implementation 2020-03-12 15:15:16 +02:00
Adrian Chiris
a1a2429df1 Move PCI introspection logic to its own internal package
This will enable code reuse across sources while preventing
packages which are not under 'source' to import it.

subsequent commits will introduce the 'custom' source which
will use the logic.
2020-03-12 15:09:27 +02:00
Mikko Ylinen
24c3a98303 pci: add sriov.capable attribute
SR-IOV is a PCI attribute and also non-NIC PCI devices can have it. Therefore,
it is useful to label all PCI devices with that capability.

After this commit the following labels for Intel NICs are overlapping:
feature.node.kubernetes.io/pci-0200_8086.sriov.capable=true
feature.node.kubernetes.io/network-sriov.capable=true

Signed-off-by: Mikko Ylinen <mikko.ylinen@intel.com>
2020-02-18 20:09:32 +02:00
Antti Kervinen
d3d13347f8 vendor: update klauspost/cpuid
Update cpuid from v1.2.2 to v1.2.3. Brings in SGX improvements and
CPUID leaf 7 feature detection (VBMI2, VPOPCNTDQ, GFNI, VAES,
AVX512BITALG, VPCLMULQDQ, AVX512BF16, AVX512VP2INTERSECT). Blacklist
cpuid-SGX* (issue #130).

Signed-off-by: Antti Kervinen <antti.kervinen@intel.com>
2020-01-29 14:51:44 +02:00
Markus Lehtonen
882bbeea3f source/cpu: support 'false' status of cpu-pstate.turbo
Some workloads may benefit from Intel Turbo Boost technology being
disabled. This patch sets the
'feature.node.kubernetes.io/cpu-pstate.turbo' label to 'false' if we can
detect that it has been disabled. If detection fails no label is
published.
2019-08-29 16:18:12 +03:00
Yaakov Selkowitz
8d97ad9cad source/cpu: disable intel_pstate detection on non-x86 architectures 2019-08-28 07:53:31 -04:00
Yaakov Selkowitz
fe4421af65 source/cpu: add IBM Z CPU support to cpuid 2019-08-28 07:53:22 -04:00
Yaakov Selkowitz
81494f1883 source/cpu: add IBM Power CPU support to cpuid 2019-08-28 07:53:10 -04:00
Markus Lehtonen
012f7e4946 source/memory: detect NVDIMM DAX mode
Extend NVDIMM (non-volatile DIMM) discovery by adding detection of DAX
mode, i.e. detection of regions in DAX/AppDirect mode.
The new label is:
    feature.node.kubernetes.io/memory-nv.dax: true
2019-06-11 09:58:30 +03:00
Markus Lehtonen
6002a00750 kernel: fix undefined symbol error
Fix a build failure that slipped through when adding support for
non-binary kconfig options in #197,
2019-06-10 15:25:41 +03:00
Kubernetes Prow Robot
8c666cbdc2
Merge pull request #197 from marquiz/devel/kconfig
Support non-binary kconfig options in kernel feature source
2019-06-07 11:44:00 -07:00