Re: Linux Loopback Interface

  • From: Tanel Poder <tanel@xxxxxxxxxxxxxx>
  • To: Rakesh Ra <rakeshra.tr@xxxxxxxxx>
  • Date: Wed, 11 Sep 2019 22:53:28 -0400

You could use lsof to see who's using any TCP/UDP sockets with IP 127.0.0.1
as one endpoint (or any other IP if any have been assigned to loopback
interface)

$ *sudo lsof -nPi | grep 127.0.0.1*
chronyd    5334 chrony    1u  IPv4   35307      0t0  UDP 127.0.0.1:323
master     6535   root   13u  IPv4   38297      0t0  TCP 127.0.0.1:25
(LISTEN)

Regarding the memory errors and reducing MTU size, there have been similar
issues with jumbo frames. "Large" frames and MTU sizes require kernel to
allocate large *contiguous* memory chunks from kernel memory. Since such
allocation sizes can vary (different kernel drivers & allocation reasons
using them), this kernel memory can get fragmented, thus finding a "large"
chunk on demand gets problematic. This can cause paging/reclamation issues
(even if there's some memory free) or kernel memory allocation failures.

One solution would be to tune the Linux kernel settings to keep more memory
free at any time (vm.min_free_kbytes) or use lower MTU/frame/kernel memory
allocation sizes.

You can monitor the fragmentation of (some) kernel memory via
*/proc/buddyinfo*. This is a good article explaining the buddy allocator
basics and how to read /proc/buddyinfo + a python script:

$ *cat /proc/buddyinfo *
Node 0, zone      DMA      1      0      0      0      2      1      1
 0      1      1      3
Node 0, zone    DMA32   2656   4401   3224   4288   1480    277     29
 0      0      0      0
Node 0, zone   Normal     23     76     25     16      5      0      0
 0      1      0      0

$ *./buddyinfo.py *
Node: 0
 Zone: DMA
 Free KiB in zone: 15876.00
Fragment size        Free fragments       Total available KiB
4096                 1                    4.0
8192                 0                    0.0
16384                0                    0.0
32768                0                    0.0
65536                2                    128.0
131072               1                    128.0
262144               1                    256.0
524288               0                    0.0
1048576              1                    1024.0
2097152              1                    2048.0
4194304              3                    12288.0
 Zone: DMA32
 Free KiB in zone: 368760.00
Fragment size        Free fragments       Total available KiB
4096                 1788                 7152.0
8192                 4401                 35208.0
16384                3224                 51584.0
32768                4288                 137216.0
65536                1480                 94720.0
131072               277                  35456.0
262144               29                   7424.0
524288               0                    0.0
1048576              0                    0.0
2097152              0                    0.0
4194304              0                    0.0
 Zone: Normal
 Free KiB in zone: 2956.00
Fragment size        Free fragments       Total available KiB
4096                 23                   92.0
8192                 76                   608.0
16384                25                   400.0
32768                16                   512.0
65536                5                    320.0
131072               0                    0.0
262144               0                    0.0
524288               0                    0.0
1048576              1                    1024.0
2097152              0                    0.0
4194304              0                    0.0


Thanks
--
Tanel Poder
https://blog.tanelpoder.com/seminar


On Tue, Sep 10, 2019 at 10:20 PM Rakesh Ra <rakeshra.tr@xxxxxxxxx> wrote:

Hi All,

Can someone shed some light on for what operations Oracle can use loopback
interface? We had the below issue on one of our primary production database
running on 12.1.0.2 running on Red Hat Linux 7.5.


skgxpvfynet: mtype: 61 process 75262 failed because of a resource problem
in the OS. The OS has most likely run out of buffers (rval: 4) opiodr
aborting process unknown ospid (75262) as a result of ORA-603

Oracle asked us to fix the MTU by lowering it from 64k to 16k by following
the below note.There were just application user connections (jsut less than
400 user processes) and couple of scp process which was shipping the backup
files from the this primary database server to standby database server as
part of DR build.

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 16436  <<<<<<<<<<<< This value was
64K during the issue time. It looks starting 6.5 kernel , MTU is bumped to
64K. We lowered this to 16K
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 2689657  bytes 17458642228 (16.2 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2689657  bytes 17458642228 (16.2 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Oracle Linux: ORA-27301:OS Failure Message: No Buffer Space Available (Doc
ID 2041723.1)

I followed up with Oracle to see, in what way loopback interface is
contributing to the issue here, but they failed to give more details saying
it's OS specific and they don't have idea on the same. :(

Appreciate if someone has some previous experience working on similar
issue provide some information related to this.

BR,
Rakesh RA

Other related posts: