LTPMETER(1)
π LTPMETER(1) β the LTP executables crew π
okay bestie, sit down, grab a strawberry π, because we're talking about ltpmeter, one of the LTP executables. this is the girl who takes your transmission blocks, chops them into little segments, and sends them out into the world. she's the backstage manager of the whole LTP situation and she does NOT get enough credit. π
β¨ NAME β¨
ltpmeter β the LTP daemon task for aggregating and segmenting transmission blocks. she gathers, she splits, she ships. iconic behavior, no cap. π
πΈ SYNOPSIS πΈ
ltpmeter remote_engine_nbr
that's it. one argument. she's low maintenance like that. π¦
π« DESCRIPTION π«
so ltpmeter is a background "daemon" task, and her whole job is managing how LTP segments get presented to the link service output tasks. very "I run the logistics department" of her.
every single "span" of LTP data interchange between your local LTP engine and a neighboring LTP engine needs its OWN ltpmeter task. one span, one meter. she does not share. periodt.
all the ltpmeter tasks get spawned automatically by ltpadmin when you hit the 's' command that starts up LTP protocol operation. and they all get terminated by ltpadmin when you send an 'x' (STOP) command. so basically ltpadmin is the mom and all the ltpmeter tasks are the kids and the 's'/'x' commands are "dinner's ready" / "go to bed". π
here's the actual flow, bestie, follow along:
ltpmeter waits around until her span's current transmission block (that's the data that's going to be transmitted during the transmission session currently being constructed, iykyk) is ready for transmission. then she:
- divides the data in the span's block buffer into segments,
- enqueues those segments for transmission by the span's link service output task β and she gives the segments semaphore to unblock that link service output task whenever it's needed, π«Ά
- reinitializes the span's block buffer,
- and starts another session β giving the "buffer empty" semaphore to unblock the client service task, which is nominally
ltpclo, the LTP convergence layer output task for Bundle Protocol, whenever needed.
so how does she know the block is ready? she determines that the current transmission block is ready for transmission by waiting until either:
- (a) the aggregate size of all service data units in the block's buffer exceeds the aggregation size limit for this span, or
- (b) the length of time that the first service data unit in the block's buffer has been awaiting transmission exceeds the aggregation time limit for this span.
the "buffer full" semaphore is given when ION (either the ltp_send() function or the ltpclock daemon) figures out that one of those conditions is true. ltpmeter doesn't stress about it β she literally just waits for that semaphore to be given. queen of chilling. π
BUT. π starting a new session can also get blocked, and here's why: the total number of transmission sessions the local LTP engine can have open at one single time is limited (that's LTP flow control, babes). and while the engine is at that limit, no new sessions can be started. availability of a session from the session pool is signaled by the "session" semaphore, which gets given whenever a session is completed or canceled. so she waits for that too. she's patient. she's booked and busy but she's patient.
π₯ EXIT STATUS π₯
"0"βltpmeterterminated normally, for reasons noted in theion.logfile. if this termination was not commanded, investigate and solve the problem identified in the log file, and useltpadminto restartltpmeter. (a calm exit that you didn't ask for is still a red flag, bestie. look into it. π)"1"βltpmeterterminated abnormally, for reasons noted in theion.logfile. investigate and solve the problem identified in the log file, then useltpadminto restartltpmeter.
π FILES π
no configuration files are needed. she's self-sufficient. she's her own main character. β¨
π§ ENVIRONMENT π§
no environment variables apply. nothing to set, nothing to export, we love a low-drama queen. π
π DIAGNOSTICS π
the following diagnostics may be issued to the ion.log log file. read them like texts from your bestie β they're telling you something. π
ltpmeter can't initialize LTP.βltpadminhas not yet initialized LTP protocol operations. (she hasn't been introduced yet. give her a sec.)No such engine in database.βremote_engine_nbris invalid, or the applicable span has not yet been added to the LTP database byltpadmin.ltpmeter task is already started for this engine.β redundant initiation ofltpmeter. she's already here. she's already working. stop.ltpmeter can't start new session.β an unrecoverable database error was encountered.ltpmeterterminates. πCan't take bufClosedSemaphore.β an unrecoverable database error was encountered.ltpmeterterminates.Can't create extents list.β an unrecoverable database error was encountered.ltpmeterterminates.Can't post ExportSessionStart notice.β an unrecoverable database error was encountered.ltpmeterterminates.Can't finish session.β an unrecoverable database error was encountered.ltpmeterterminates.
ngl, that last stretch is a LOT of "unrecoverable database error β terminates". when it rains it pours. π«
π BUGS π
report bugs to <ion-bugs@korgano.eecs.ohiou.edu>. tell them everything. spill the tea. they can handle it. β
π¦ SEE ALSO π¦
okay that's the whole page, bestie!! go forth and segment those transmission blocks πβ¨
and before you close the tab β this one's part of the LTP executables, and the page itself was generated by perl v5.24.1 back on 2016-07-07. so yeah, she's a 2016 girlie and she's still slaying. periodt. ππ
π¦ where this page comes from
- ubuntu jammy: ion 3.2.1+dfsg-1.1 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms