Project

General

Profile

Bug #10680

Improve interface caching when we have many interfaces

Added by Jonas Christoffersen 5 months ago. Updated about 1 month ago.

Status:
Feedback
Priority:
Normal
Category:
Interfaces
Target version:
Start date:
06/19/2020
Due date:
% Done:

100%

Estimated time:
Affected Version:
2.4.5-p1
Affected Architecture:
All

Description

In interfaces.inc there's a caching system to avoid too many calls to pfSense_interface_listget().
This cache is invalidated a lot, also many times where we don't need to. It is for example invalidated several times for each VLAN during boot, which leads to slow boot times when we have more than a few hundred VLANs.

The list of interfaces can only change when we create or destroy interfaces. Therefore a rewrite of the cache-system to only invalidate on create/destroy, along with deferring invalidation to outside of loops (eg. we loop through each VLAN twice during boot), will drastically reduce boot times.

I will send a pull request soon to implement the changes.
Along with issue #10589, this change will improve boot times from timing out (max PHP execution time) to booting in a few minutes for 1000 or 1500 VLANs.

This is the case for 2.4.5 and 2.4.5-p1. I believe its also the case for 2.5.0.

Associated revisions

Revision 7d813139 (diff)
Added by Jonas Christoffersen about 1 month ago

Fix #10680: Rewrite cache system in interfaces.inc

Change it to not invalidate cache when not needed. Makes boot much faster
when we have many VLANs

History

#2 Updated by Jim Pingle 5 months ago

  • Status changed from New to Pull Request Review

#3 Updated by Renato Botelho about 1 month ago

  • Assignee set to Renato Botelho
  • Target version set to 2.5.0

#4 Updated by Jonas Christoffersen about 1 month ago

  • Status changed from Pull Request Review to Feedback
  • % Done changed from 0 to 100

#5 Updated by Steve Beaver about 1 month ago

  • Assignee changed from Renato Botelho to Jonas Christoffersen

Please confirm

Also available in: Atom PDF