rd, rs1, rs2rd = rs1 % rs2remu is the unsigned remainder — the leftover from an unsigned division. It pairs with divu exactly as rem pairs with div. The u, as always, means the bits are read as plain non-negative numbers (0 up to about 4 billion) rather than as signed values that could be negative. If the distinction between signed and unsigned is new, the divu page explains it; the short version is that the same bits can be interpreted either way, and the u instructions choose the never-negative reading.
This unsigned version is actually the cleaner remainder to reason about, because the awkward question of what sign the result should take simply disappears. The result of remu is always between 0 and one-less-than-the-divisor — never negative, no special cases. That is exactly what you want when wrapping a position back around a circular buffer, spreading hash values across a fixed number of slots, or cycling through a repeating sequence.
Like all of RISC-V's divide-family instructions, remu never crashes; remainder by zero returns the original number rather than halting.
A neat shortcut: when the divisor is a power of two, you can get the same answer far more cheaply with a bitwise AND (andi). andi t0, t0, 7 produces the remainder when dividing by 8, because an unsigned remainder by a power of two is just the value's lowest bits. That trick only works for powers of two.