Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Packet loss with multiple disk sizes, when some become full #30

Open
varenius opened this issue Jun 2, 2023 · 2 comments
Open

Packet loss with multiple disk sizes, when some become full #30

varenius opened this issue Jun 2, 2023 · 2 comments

Comments

@varenius
Copy link

varenius commented Jun 2, 2023

OSO flexbuff disks are sometimes upgraded in batches, not all at once. For one machine, this means we have 12 x 20TB and 18 x 12 TB. Because jive5ab is striping evenly across all disks, there is a problem with this configuration. When we have many full disks, there is a risk that a record-command will spend so much time trying to find a free disk that we get significant packet loss. This happened yesterday in experiment vr2303_oe where 623 scans had 5-25% loss. One example:

202315214:09:50 2023-06-01 12:09:50.02: Processing command 'record?'
202315214:09:50 2023-06-01 12:09:50.02: Reply: !record?  0 : on : 3177 : vr2302_oe_152-1209c : 2077013400 ;
202315214:09:50 2023-06-01 12:09:50.02: Processing command 'evlbi?'
202315214:09:50 2023-06-01 12:09:50.02: Reply: !evlbi? 0 : total : 258412 : loss : 0 ( 0.00%) : out-of-order : 0 ( 0.00%) : extent : 0seqnr/pkt ;
202315214:09:50 2023-06-01 12:09:50.68: 
202315214:09:50 #################### WARNING ####################
202315214:09:50   mountpoint /mnt/disk12  POSSIBLY BAD!
202315214:09:50   failed to write 255995904 bytes to /mnt/disk12/vr2302_oe_152-1209c_3/vr2302_oe_152-1209c_3.00000000
202315214:09:50     - No space left on device
202315214:09:50   removing it from list!
202315214:09:50 #################################################
202315214:09:51 2023-06-01 12:09:51.45: 
202315214:09:51 #################### WARNING ####################
202315214:09:51   mountpoint /mnt/disk17  POSSIBLY BAD!
202315214:09:51   failed to write 255995904 bytes to /mnt/disk17/vr2302_oe_152-1209c_3/vr2302_oe_152-1209c_3.00000000
202315214:09:51     - No space left on device
202315214:09:51   removing it from list!
202315214:09:51 #################################################
202315214:09:52 2023-06-01 12:09:52.60: 
202315214:09:52 #################### WARNING ####################
202315214:09:52   mountpoint /mnt/disk26  POSSIBLY BAD!
202315214:09:52   failed to write 255995904 bytes to /mnt/disk26/vr2302_oe_152-1209c_3/vr2302_oe_152-1209c_3.00000000
202315214:09:52     - No space left on device
202315214:09:52   removing it from list!
202315214:09:52 #################################################
202315214:09:53 2023-06-01 12:09:53.01: 
202315214:09:53 #################### WARNING ####################
202315214:09:53   mountpoint /mnt/disk23  POSSIBLY BAD!
202315214:09:53   failed to write 255995904 bytes to /mnt/disk23/vr2302_oe_152-1209c_7/vr2302_oe_152-1209c_7.00000000
202315214:09:53     - No space left on device
202315214:09:53   removing it from list!
202315214:09:53 #################################################
202315214:09:54 2023-06-01 12:09:54.22: 
202315214:09:54 #################### WARNING ####################
202315214:09:54   mountpoint /mnt/disk27  POSSIBLY BAD!
202315214:09:54   failed to write 255995904 bytes to /mnt/disk27/vr2302_oe_152-1209c_2/vr2302_oe_152-1209c_2.00000000
202315214:09:54     - No space left on device
202315214:09:54   removing it from list!
202315214:09:54 #################################################
202315214:09:54 2023-06-01 12:09:54.34: 
202315214:09:54 #################### WARNING ####################
202315214:09:54   mountpoint /mnt/disk22  POSSIBLY BAD!
202315214:09:54   failed to write 255995904 bytes to /mnt/disk22/vr2302_oe_152-1209c_6/vr2302_oe_152-1209c_6.00000000
202315214:09:54     - No space left on device
202315214:09:54   removing it from list!
202315214:09:54 #################################################
202315214:09:55 2023-06-01 12:09:55.01: 
202315214:09:55 #################### WARNING ####################
202315214:09:55   mountpoint /mnt/disk28  POSSIBLY BAD!
202315214:09:55   failed to write 255995904 bytes to /mnt/disk28/vr2302_oe_152-1209c_6/vr2302_oe_152-1209c_6.00000000
202315214:09:55     - No space left on device
202315214:09:55   removing it from list!
202315214:09:55 #################################################
202315214:09:55 2023-06-01 12:09:55.47: 
202315214:09:55 #################### WARNING ####################
202315214:09:55   mountpoint /mnt/disk25  POSSIBLY BAD!
202315214:09:55   failed to write 255995904 bytes to /mnt/disk25/vr2302_oe_152-1209c_7/vr2302_oe_152-1209c_7.00000001
202315214:09:55     - No space left on device
202315214:09:55   removing it from list!
202315214:09:55 #################################################
202315214:09:56 2023-06-01 12:09:56.57: 
202315214:09:56 #################### WARNING ####################
202315214:09:56   mountpoint /mnt/disk20  POSSIBLY BAD!
202315214:09:56   failed to write 255995904 bytes to /mnt/disk20/vr2302_oe_152-1209c_7/vr2302_oe_152-1209c_7.00000001
202315214:09:56     - No space left on device
202315214:09:56   removing it from list!
202315214:09:56 #################################################
202315214:09:57 2023-06-01 12:09:57.58: 
202315214:09:57 #################### WARNING ####################
202315214:09:57   mountpoint /mnt/disk16  POSSIBLY BAD!
202315214:09:57   failed to write 255995904 bytes to /mnt/disk16/vr2302_oe_152-1209c_7/vr2302_oe_152-1209c_7.00000001
202315214:09:57     - No space left on device
202315214:09:57   removing it from list!
202315214:09:57 #################################################
202315214:09:58 2023-06-01 12:09:58.72: 
202315214:09:58 #################### WARNING ####################
202315214:09:58   mountpoint /mnt/disk15  POSSIBLY BAD!
202315214:09:58   failed to write 255995904 bytes to /mnt/disk15/vr2302_oe_152-1209c_7/vr2302_oe_152-1209c_7.00000001
202315214:09:58     - No space left on device
202315214:09:58   removing it from list!
202315214:09:58 #################################################
202315214:09:59 2023-06-01 12:09:59.35: 
202315214:09:59 #################### WARNING ####################
202315214:09:59   mountpoint /mnt/disk19  POSSIBLY BAD!
202315214:09:59   failed to write 255995904 bytes to /mnt/disk19/vr2302_oe_152-1209c_7/vr2302_oe_152-1209c_7.00000001
202315214:09:59     - No space left on device
202315214:09:59   removing it from list!
202315214:09:59 #################################################
202315214:10:00 2023-06-01 12:10:00.59: 
202315214:10:00 #################### WARNING ####################
202315214:10:00   mountpoint /mnt/disk29  POSSIBLY BAD!
202315214:10:00   failed to write 255995904 bytes to /mnt/disk29/vr2302_oe_152-1209c_7/vr2302_oe_152-1209c_7.00000001
202315214:10:00     - No space left on device
202315214:10:00   removing it from list!
202315214:10:00 #################################################
202315214:10:01 2023-06-01 12:10:01.25: 
202315214:10:01 #################### WARNING ####################
202315214:10:01   mountpoint /mnt/disk21  POSSIBLY BAD!
202315214:10:01   failed to write 255995904 bytes to /mnt/disk21/vr2302_oe_152-1209c_2/vr2302_oe_152-1209c_2.00000001
202315214:10:01     - No space left on device
202315214:10:01   removing it from list!
202315214:10:01 #################################################
202315214:10:02 2023-06-01 12:10:02.57: 
202315214:10:02 #################### WARNING ####################
202315214:10:02   mountpoint /mnt/disk13  POSSIBLY BAD!
202315214:10:02   failed to write 255995904 bytes to /mnt/disk13/vr2302_oe_152-1209c_6/vr2302_oe_152-1209c_6.00000001
202315214:10:02     - No space left on device
202315214:10:02   removing it from list!
202315214:10:02 #################################################
202315214:10:03 2023-06-01 12:10:03.48: 
202315214:10:03 #################### WARNING ####################
202315214:10:03   mountpoint /mnt/disk14  POSSIBLY BAD!
202315214:10:03   failed to write 255995904 bytes to /mnt/disk14/vr2302_oe_152-1209c_6/vr2302_oe_152-1209c_6.00000001
202315214:10:03     - No space left on device
202315214:10:03   removing it from list!
202315214:10:03 #################################################
202315214:10:04 2023-06-01 12:10:04.57: 
202315214:10:04 #################### WARNING ####################
202315214:10:04   mountpoint /mnt/disk24  POSSIBLY BAD!
202315214:10:04   failed to write 255995904 bytes to /mnt/disk24/vr2302_oe_152-1209c_6/vr2302_oe_152-1209c_6.00000001
202315214:10:04     - No space left on device
202315214:10:04   removing it from list!
202315214:10:04 #################################################
202315214:10:04 2023-06-01 12:10:04.59: 
202315214:10:04 #################### WARNING ####################
202315214:10:04   mountpoint /mnt/disk18  POSSIBLY BAD!
202315214:10:04   failed to write 255995904 bytes to /mnt/disk18/vr2302_oe_152-1209c_6/vr2302_oe_152-1209c_6.00000001
202315214:10:04     - No space left on device
202315214:10:04   removing it from list!
202315214:10:04 #################################################
202315214:10:18 2023-06-01 12:10:18.00: Processing command 'record=off:vr2302_oe_152-1209c'
202315214:10:18 2023-06-01 12:10:18.00: close_filedescriptor: closed fd#7
202315214:10:18 2023-06-01 12:10:18.01: udpsnorreader_stream: done
202315214:10:18 2023-06-01 12:10:18.34: net2vbs guard function: transfer done
202315214:10:19 2023-06-01 12:10:19.43: Reply: !record=  1 ;
202315214:10:19 2023-06-01 12:10:19.43: Processing command 'evlbi?'
202315214:10:19 2023-06-01 12:10:19.43: Reply: !evlbi? 0 : total : 3436146 : loss : 403976 (10.52%) : out-of-order : 0 ( 0.00%) : extent : 0seqnr/pkt ;

Thing is: we can sustain this 8 Gbps recording rate just fine with the 12 disks with free space. So the problem, as I understand it, is that jive5ab keeps checking the same full disks for every scan.

During an experiment, disks are unlikely to get more free space. So, one could imagine that when jive5ab encounters a full disk, it will be out of the pool FOREVER until some "clear allowed disks" or similar command is sent? In this way, one could send a "clear" command at the start of every experiment, and when disks fill up, jive5ab will only fail once per disk during the experiment, instead of repeating the same search in vain for every scan?

@haavee
Copy link
Member

haavee commented Jun 5, 2023

Hi @varenius! I see; this can indeed be an issue.
Thing is there might already be the tooling you need only it works inversely to your proposal.
Since many years there has been the set_disks= .... command available. This informs jive5ab on which disks to record. It can be used to re-scan all disks but also, by setting explicit patterns, restrict jive5ab to record only on a pre-determined set of disks.
I think it might still be eligible since both approaches (your suggestion and the already existing functionality-based one) need an informed individual to make a decision when to switch back to the default of "record on all disks".
For the moment the set_disks=...; could be in the field system's jive5ab.ctl script, and when the decision is made to fall back to using recording on all disks, that line could be deleted and a one-time "re-scan" of all disks (if you don't want to restart jiver5ab) would do the trick.
A drawback of your suggestion would be that jive5ab does not "remember" the list of excluded disks between restarts, so if during an experiment you need to restart you'd be back to jive5ab scanning & using all disks.
What's your thoughts on an approach like my suggestion?

@varenius
Copy link
Author

varenius commented Jun 7, 2023

Thank you for reminding me about the set_disks command. A strategy like you propose could indeed work, and in principle it could cover what I wished for already - thanks!

However, for the particular case at hand, we'd like to avoid manual tallies of "which disk to use when" as much as possible. As it is, with one group of "small" disks full, some space will be available when an experiment is deleted, but perhaps not enough to use all the disks for the complete duration of the next experiment. This makes for a somewhat complicated disk-surveillence strategy to make this work. If jive5ab could just "forget about a disk when full until future notice", then one does not have to plan, but can just rely on disks to be omitted when full. It's a simpler book-keeping problem.

Still, it's some manual work to keep track off, and not using all disks all the time is in principle suboptimal for performance. So, I'm now thinking that for this particular case, where we have 2 flexbuffs with this situation (2 blocks of disks each, one big and one small), I'm wondering if the pragmatic solution would simply be the hardware-fix of shuffling disks around so that one machine has all the "big" disks, and the other all the "small" disks. This would result in both machines having only disks of one size. For now, that would fix the problem, at the expense of one flexbuff having more space than the other (but that's fine).

I will ponder this a bit more. I still think that perhaps a flag to make jive5ab "remember bad disks" until a restart, or manual clear (say a set_disks= command) could be useful. But perhaps it's not the simplest answer to my current issue :).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants