It's possible to run all those packages in 2GB or RAM but I would not recommend doing so.
You have to tune them carefully to avoid exhausting the RAM. You cannot just enable all the signatures and lists in each and expect that to work.
I run Snort and pfBlocker-ng in a 3100 as my edge here. But I use only basic ad blocking in pfBlocker and only the ET Open sigs in Snort (not in blocking mode). With that setup I could probably also run Squid (very carefully). But I would not!
last pid: 2837; load averages: 0.67, 0.60, 0.62 up 5+18:13:34 16:40:10
81 processes: 1 running, 80 sleeping
CPU: 0.0% user, 0.4% nice, 0.6% system, 0.0% interrupt, 99.0% idle
Mem: 140M Active, 1285M Inact, 223M Wired, 84M Buf, 344M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
52379 root 2 40 20 271M 248M bpf 1 182:38 0.73% snort
73496 root 1 52 0 129M 49M accept 0 1:22 0.00% php-fpm
3052 root 1 35 0 129M 49M accept 1 1:56 0.00% php-fpm
67066 root 1 52 0 129M 47M accept 0 1:11 0.00% php-fpm
42460 root 1 52 0 129M 47M accept 0 0:49 0.00% php-fpm
81284 root 1 52 0 129M 46M accept 1 0:47 0.00% php-fpm
38356 root 1 52 0 127M 46M accept 1 1:29 0.00% php-fpm
45364 root 1 52 0 126M 44M accept 1 0:02 0.00% php-fpm
12066 unbound 2 20 0 61M 40M kqread 0 23:14 0.00% unbound
70717 root 1 20 0 46M 36M nanslp 0 3:57 0.04% php
1390 root 1 20 0 89M 29M kqread 1 0:16 0.00% php-fpm
4115 root 17 52 0 42M 21M sigwai 1 4:47 0.01% charon
34517 root 157 20 0 64M 16M uwait 0 1:06 0.00% filterdns
19905 dhcpd 1 20 0 13M 10M select 0 0:41 0.01% dhcpd
That's with next to no traffic passing.
However this may be a moot question since the 3100 is now EoS and unlikely to return. You would have to find one second hand at this point.
Steve