SADC(8)

๐Ÿ’– SADC(8) ๐Ÿ’–

okay so bestie, let me introduce you to sadc โ€” the System activity data collector from the Linux User's Manual, AUGUST 2023 edition. this one's a backend baddie, not your main character, but she's literally the reason your sar data exists. no cap. ๐Ÿซถ


โœจ NAME โœจ

sadc โ€” System activity data collector. that's it, that's the vibe. she collects. she samples. she writes binary. iconic behavior only. ๐Ÿ’…


๐ŸŒธ SYNOPSIS ๐ŸŒธ

/usr/lib/sa/sadc [ -C comment ] [ -D ] [ -F ] [ -f ] [ -L ] [ -V ] [ -S
{ keyword[,...] | ALL | XALL } ] [ interval [ count ] ] [ outfile ]

like, she's got a lot of options but she's lowkey chill about it. let me walk you through it. ๐ŸŽ€


๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

so here's the tea: sadc samples system data a specified number of times (count) at a specified interval measured in seconds (interval). she writes in binary format to the specified outfile or to standard output. if outfile is set to -, then sadc uses the standard system activity daily data file โ€” see below, i gotchu. in this case, if the file already exists, sadc will overwrite it if it's from a previous month. like, out with the old, in with the new. periodt. ๐Ÿ—‘๏ธโœจ

by default sadc collects most of the data available from the kernel. but there are also optional metrics โ€” for which the relevant options must be explicitly passed to sadc to be collected (see option -S below). so yeah, she doesn't just give you everything unless you ask. consent is key. ๐Ÿ™ˆ๐Ÿ’–

the standard system activity daily data file is named saDD unless option -D is used, in which case its name is saYYYYMMDD, where YYYY stands for the current year, MM for the current month and DD for the current day. by default it is located in the /var/log/sa directory. yet it is possible to specify an alternate location for it: if outfile is a directory (instead of a plain file) then it will be considered as the directory where the standard system activity daily data file will be saved. so like, you can move her whole setup if you want. flexible queen. ๐Ÿงš

when the count parameter is not specified, sadc writes its data endlessly. literally forever. no stopping her. when both interval and count are not specified, and option -C is not used, a dummy record โ€” which is used at system startup to mark the time when the counter restarts from 0 โ€” will be written. for example, one of the system startup script may write the restart mark to the daily data file by the command entry:

/usr/lib/sa/sadc -

the sadc command is intended to be used as a backend to the sar command. she's the support system, the backbone, the stage crew of your system monitoring. respect her. ๐Ÿ‘‘

Note: The sadc command only reports on local activities. she's not nosy about your network drama. she stays in her lane. ๐Ÿ’…

๐Ÿ’… OPTIONS ๐Ÿ’…

okay bestie, here's the full menu. every single flag, no skips, no skips, no cap. ๐Ÿ“

  • -C comment โ€” When neither the interval nor the count parameters are specified, this option tells sadc to write a dummy record containing the specified comment string. this comment can then be displayed with option -C of sar. it's giving "leave a note for future you" energy. ๐Ÿ“
  • -D โ€” Use saYYYYMMDD instead of saDD as the standard system activity daily data file name. so like, full date vibes instead of just day. very organized. very demure. ๐Ÿ—“๏ธ
  • -F โ€” The creation of outfile will be forced. if the file already exists and has a format unknown to sadc then it will be truncated. this may be useful for daily data files created by an older version of sadc and whose format is no longer compatible with current one. basically she's like "i don't know her" and starts fresh. no apologies. ๐Ÿ”ฅ
  • -f โ€” fdatasync() will be used to ensure data is written to disk. this differs from the normal operation in that a sudden system reset is less likely to result in the saDD datafiles being corrupted. however, this is at the expense of performance within the sadc process as forward progress will be blocked while data is written to underlying disk instead of just to cache. so like, safer but slower. trade-offs, bestie. ๐Ÿ’€
  • -L โ€” sadc will try to get an exclusive lock on the outfile before writing to it or truncating it. failure to get the lock is fatal, except in the case of trying to write a normal (i.e. not a dummy and not a header) record to an existing file, in which case sadc will try again at the next interval. usually, the only reason a lock would fail would be if another sadc process were also writing to the file. this can happen when cron is used to launch sadc. if the system is under heavy load, an old sadc might still be running when cron starts a new one. without locking, this situation can result in a corrupted system activity file. so like, lock it or lose it. ๐Ÿšจ
  • -S { keyword[,...] | ALL | XALL } โ€” Possible keywords are DISK, INT, IPV6, POWER, SNMP, XDISK, ALL and XALL. specify which optional activities should be collected by sadc. some activities are optional to prevent data files from growing too large. the DISK keyword indicates that sadc should collect data for block devices. the INT keyword indicates that sadc should collect data for system interrupts. the IPV6 keyword indicates that IPv6 statistics should be collected by sadc. the POWER keyword indicates that sadc should collect power management statistics. the SNMP keyword indicates that SNMP statistics should be collected by sadc. the ALL keyword is equivalent to specifying all the keywords above and therefore all previous activities are collected. the XDISK keyword is an extension to the DISK one and indicates that partitions and filesystems statistics should be collected by sadc in addition to disk statistics. this option works only with kernels 2.6.25 and later. the XALL keyword is equivalent to specifying all the keywords above (including keyword extensions) and therefore all possible activities are collected.
Important note: The activities (including optional ones) saved in an existing data file prevail over those selected with option -S. as a consequence, appending data to an existing data file will result in option -S being ignored. so like, she's gonna do what the file says, not what you say. respect the file. ๐Ÿ’€
  • -V โ€” Print version number then exit. she's like "here's my version, bye." short and sweet. ๐Ÿ‘‹

๐ŸŒˆ ENVIRONMENT ๐ŸŒˆ

the sadc command takes into account the following environment variable:

  • S_TIME_DEF_TIME โ€” If this variable exists and its value is UTC then sadc will save its data in UTC time. sadc will also use UTC time instead of local time to determine the current daily data file located in the /var/log/sa directory. so like, she can be on UTC time if you tell her to. world traveler vibes. ๐ŸŒโœจ

๐ŸŽ€ EXAMPLES ๐ŸŽ€

bestie, here are some real-life slay moments. ๐Ÿ’–

/usr/lib/sa/sadc 1 10 /tmp/datafile

write 10 records of one second intervals to the /tmp/datafile binary file. so like, one second, ten times, boom. done. ๐Ÿฆ‹

/usr/lib/sa/sadc -C "Backup Start" /tmp/datafile

insert the comment "Backup Start" into the file /tmp/datafile. it's giving "note to self" energy. ๐Ÿ“


๐Ÿ’€ BUGS ๐Ÿ’€

okay so heads up, bestie:

  • the /proc filesystem must be mounted for the sadc command to work. if it's not, she's not gonna work. no cap. ๐Ÿ˜ญ
  • all the statistics are not necessarily available, depending on the kernel version used. sadc assumes that you are using at least a 2.6 kernel. so like, if you're on some ancient kernel, she might be missing some tea. ๐Ÿ’…

๐Ÿงš FILES ๐Ÿงš

  • /var/log/sa/saDD
  • /var/log/sa/saYYYYMMDD

the standard system activity daily data files and their default location. YYYY stands for the current year, MM for the current month and DD for the current day. very demure, very mindful. ๐Ÿ“โœจ

  • /proc and /sys contain various files with system statistics. she reads these. she's nosy but in a cute way. ๐Ÿ™ˆ

๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

Sebastien Godard (sysstat <at> orange.fr). shoutout to the king who made this happen. ๐Ÿซถ


๐ŸŒŸ SEE ALSO ๐ŸŒŸ

sar(1), sa1(8), sa2(8), sadf(1), sysstat(5)

iykyk, these are the other tools you'll wanna know. go check 'em out. ๐Ÿ”ฅ


this page is from the Linux User's Manual, AUGUST 2023 edition. periodt. ๐Ÿ’–โœจ

๐Ÿ“ฆ where this page comes from