Estoy tratando de probar una condición específica que solo ocurrirá si perl
tiene un malloc
que falla debido a que no queda memoria. Me gustaría que perl
muera lo más rápido posible. Me imaginé la forma de ayuno sería crear algunos grandes arreglos como¿Cuál es una buena manera de forzar a Perl 5 a quedarse sin memoria rápidamente en OS X?
perl -le '$_->[100_000_000_000] = 1 for \(@a, @b, @c, @d); <>'
Pero tuve que matarla después de mi intercambio golpeó 5 concierto con señales de detenerse (Estoy en OS X 10.6).
acabo probado en Linux y muere muy rápido:
time perl -le '$_->[1_000_000_000] = 1 for \(@a, @b, @c, @d); <>'
Out of memory!
real 0m0.023s
user 0m0.012s
sys 0m0.008s
Así que el problema parece ser OS X y su dynamic_pager
.
acabo intentado desactivar el dynamic_pager
con
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
y reiniciar, pero la máquina sólo se bloquea por completo. Mi próximo intento será cambiar el archivo de configuración com.apple.dynamic_pager.plist
para escribir los archivos vm en una partición muy pequeña.
Extraño que no has '" x "x 9e9'. – tsee
@tsee Lleva tiempo construir la cadena, pero 'perl -e '@a [9e8] = 1'' es efectivamente un' malloc'. –
"Tuve que matarlo después de que mi intercambio tocara 5 gigas sin signos de parar (estoy en OS X 10.6)". - Mac OS X muestra ese tipo de comportamiento a menudo, incluidos los casos como 'malloc (-1)'. Pruebe con cualquier otro sistema operativo donde pueda desactivar explícitamente el intercambio. (Nunca intenté hacer eso en mi Mac, pero de manera casual en Linux.) – Dummy00001